All Prompts
All Prompts

uisectiondashboardtailwindanalyticsfitnessresponsiveinteractive
Fitness Dashboard Hero UI with Stats Cards
Hero UI фитнес-дашборда с картами статистики. Аналитика, пульс, сессии, дистанция, вес. Tailwind CSS, WebGL фон.
Prompt
<div
class="bg-[#121212] text-[#E0E0E0] font-sans antialiased min-h-screen flex items-center justify-center p-4 md:p-8 relative overflow-x-hidden"
style="font-family: 'Inter', sans-serif;">
<script src="https://cdn.tailwindcss.com"></script>
<script src="https://code.iconify.design/iconify-icon/1.0.7/iconify-icon.min.js"></script>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&display=swap" rel="stylesheet">
<!-- Animated Noise Overlay -->
<canvas id="noiseCanvas"
class="pointer-events-none fixed inset-0 z-50 opacity-[0.08] mix-blend-screen w-full h-full"></canvas>
<!-- Main Dashboard Grid -->
<main class="grid grid-cols-1 md:grid-cols-4 gap-4 md:gap-5 max-w-[1024px] w-full relative z-10">
<!-- Hero Card -->
<section
class="col-span-1 md:col-span-2 md:row-span-2 rounded-[2rem] relative overflow-hidden flex flex-col justify-end min-h-[300px] md:min-h-0"
style="box-shadow: 0 20px 40px -10px rgba(0,0,0,0.9), inset 0 1px 1px rgba(255,255,255,0.15), 0 0 0 1px rgba(0,0,0,0.8); background-image: url('https://hoirqrkdgbmvpwutwuwj.supabase.co/storage/v1/object/public/assets/assets/eca707cc-a5b7-439a-b4fd-247f6106c2e1_800w.jpg'); background-size: cover; background-position: center;">
<div class="absolute inset-0 bg-gradient-to-t from-[#0A0A0A]/95 via-[#0A0A0A]/40 to-transparent"></div>
<div class="relative z-10 p-8 flex justify-between items-end w-full">
<h1 class="text-[#F5F5F5] text-3xl md:text-4xl font-light tracking-tight leading-[1.1]"
style="text-shadow: 0 2px 4px rgba(0,0,0,0.8);">OPTIMIZE<br>YOUR ROUTINE</h1>
<div
class="bg-gradient-to-b from-[#3A3A3A] to-[#1A1A1A] text-[#E88D5D] rounded-full w-12 h-12 flex items-center justify-center transition-transform hover:scale-105 cursor-pointer active:scale-95"
style="box-shadow: 0 8px 16px rgba(0,0,0,0.8), inset 0 2px 2px rgba(255,255,255,0.2), inset 0 -2px 4px rgba(0,0,0,0.6), 0 0 0 1px rgba(0,0,0,0.9);">
<iconify-icon icon="solar:bolt-linear" width="1.5rem"></iconify-icon>
</div>
</div>
</section>
<!-- Metrics Overview -->
<section class="col-span-1 md:col-span-2 rounded-[2rem] p-7 flex flex-col gap-6"
style="background: linear-gradient(145deg, #2A2A2A, #1C1C1C); box-shadow: 0 15px 35px -10px rgba(0,0,0,0.8), inset 0 1px 1px rgba(255,255,255,0.08), 0 0 0 1px rgba(0,0,0,0.8);">
<header class="flex justify-between items-center">
<h2 class="text-lg font-light tracking-tight uppercase text-[#F5F5F5]">Today's Metrics</h2>
<iconify-icon icon="solar:menu-dots-linear" class="text-[#888888]" width="1.25rem"></iconify-icon>
</header>
<div class="flex justify-between items-center text-xs font-light text-[#888888]">
<div class="flex flex-col items-center gap-2 text-[#F5F5F5]">
<div class="w-8 h-8 rounded-full flex items-center justify-center font-normal"
style="background: linear-gradient(145deg, #E88D5D, #B95A2A); box-shadow: 0 4px 8px rgba(0,0,0,0.6), inset 0 2px 2px rgba(255,255,255,0.3);">
17</div>
<span>Mon</span>
</div>
<div class="flex flex-col items-center gap-2"><span>18</span><span>Tue</span></div>
<div class="flex flex-col items-center gap-2"><span>19</span><span>Wed</span></div>
<div class="flex flex-col items-center gap-2"><span>20</span><span>Thu</span></div>
<div class="flex flex-col items-center gap-2"><span>21</span><span>Fri</span></div>
<div class="flex flex-col items-center gap-2"><span>22</span><span>Sat</span></div>
<div class="flex flex-col items-center gap-2"><span>23</span><span>Sun</span></div>
</div>
<div class="flex flex-col gap-3">
<div class="rounded-2xl p-3 flex items-center gap-4 relative overflow-hidden"
style="background: #111111; box-shadow: inset 0 3px 6px rgba(0,0,0,0.8);">
<div class="absolute left-0 top-0 bottom-0 w-[85%] bg-gradient-to-r from-[#E88D5D]/20 to-[#E88D5D]/5"></div>
<div class="text-[#F5F5F5] rounded-full w-8 h-8 flex items-center justify-center relative z-10"
style="background: linear-gradient(145deg, #E88D5D, #B95A2A);"><iconify-icon icon="solar:routing-2-linear"
width="1.1rem"></iconify-icon></div>
<div class="flex-1 flex justify-between items-center relative z-10">
<div>
<p class="text-[10px] text-[#888888]">Steps</p>
<p class="text-sm font-light text-[#F5F5F5]">11,200 <span class="text-[#666666]">/ 12k</span></p>
</div>
<div class="text-right text-sm text-[#F5F5F5]">93%</div>
</div>
</div>
</div>
</section>
<!-- Heart Rate -->
<section class="col-span-1 rounded-[2rem] p-6 flex flex-col items-center justify-center"
style="background: linear-gradient(145deg, #2A2A2A, #1C1C1C); box-shadow: 0 15px 35px -10px rgba(0,0,0,0.8);">
<div class="relative w-32 h-32 flex items-center justify-center rounded-full"
style="box-shadow: inset 0 10px 20px rgba(0,0,0,0.5);">
<svg viewBox="0 0 100 100" class="absolute inset-0 w-full h-full transform -rotate-90">
<circle cx="50" cy="50" r="42" fill="none" stroke="#111111" stroke-width="4" stroke-dasharray="2 4" />
<circle cx="50" cy="50" r="42" fill="none" stroke="#E88D5D" stroke-width="4" stroke-dasharray="2 4"
stroke-dashoffset="60" style="filter: drop-shadow(0 0 6px rgba(232,141,93,0.6));" />
</svg>
<div class="flex flex-col items-center z-10 w-24 h-24 rounded-full justify-center"
style="background: linear-gradient(145deg, #222222, #151515); box-shadow: 0 10px 20px rgba(0,0,0,0.6);">
<iconify-icon icon="solar:heart-linear" class="text-[#E88D5D] animate-pulse" width="1.2rem"></iconify-icon>
<span class="text-3xl font-light text-[#F5F5F5]">142</span>
<span class="text-[10px] text-[#888888] tracking-widest uppercase">Bpm</span>
</div>
</div>
</section>
<!-- Active Session -->
<section class="col-span-1 md:row-span-2 rounded-[2rem] p-7 flex flex-col justify-between"
style="background: linear-gradient(145deg, #2A2A2A, #1C1C1C); box-shadow: 0 15px 35px -10px rgba(0,0,0,0.8);">
<div class="text-center">
<p class="text-[10px] text-[#888888] uppercase tracking-widest mb-2">Active Session</p>
<div class="bg-[#111111] rounded-xl py-4" style="box-shadow: inset 0 4px 8px rgba(0,0,0,0.8);">
<h3 class="text-3xl font-light text-[#E88D5D]">00:38:22</h3>
</div>
</div>
<div class="flex flex-col gap-3 py-6">
<div class="flex justify-between text-sm">
<span class="text-[#888888]">Yesterday</span><span class="text-[#F5F5F5]">7.50km</span></div>
<div class="flex justify-between text-sm">
<span class="text-[#888888]">Tuesday</span><span class="text-[#F5F5F5]">10.00km</span></div>
</div>
<div class="flex gap-3 mt-auto">
<button class="flex-1 text-[#D4D4D4] rounded-full py-3 flex justify-center bg-[#1A1A1A] active:scale-95 transition-transform" style="box-shadow: 0 6px 12px rgba(0,0,0,0.6), inset 0 2px 2px rgba(255,255,255,0.05);"><iconify-icon icon="solar:stop-linear" width="1.2rem"></iconify-icon></button>
<button class="flex-1 text-[#F5F5F5] rounded-full py-3 flex justify-center transition-transform active:scale-95" style="background: linear-gradient(145deg, #E88D5D, #B95A2A); box-shadow: 0 6px 16px rgba(232,141,93,0.3);"><iconify-icon icon="solar:pause-linear" width="1.2rem"></iconify-icon></button>
</div>
</section>
<!-- Distance Tracker -->
<section class="col-span-1 rounded-[2rem] p-6 flex flex-col justify-between"
style="background: linear-gradient(145deg, #2A2A2A, #1C1C1C); box-shadow: 0 15px 35px -10px rgba(0,0,0,0.8);">
<div class="flex justify-between items-start">
<div>
<p class="text-[10px] text-[#888888] uppercase tracking-widest">Distance</p>
<p class="text-2xl font-light text-[#F5F5F5]">6.40 <span class="text-xs text-[#888888]">km</span></p>
</div>
<div class="flex -space-x-2">
<img src="https://i.pravatar.cc/100?u=1" class="w-8 h-8 rounded-full border-2 border-[#1C1C1C]">
<img src="https://i.pravatar.cc/100?u=2" class="w-8 h-8 rounded-full border-2 border-[#1C1C1C]">
</div>
</div>
<button class="mt-4 bg-[#111111] rounded-full p-1.5 pr-4 flex items-center justify-between text-[#F5F5F5]" style="box-shadow: inset 0 1px 1px rgba(255,255,255,0.05);">
<div class="flex items-center gap-3"><div class="w-8 h-8 rounded-full bg-[#2A2A2A] flex items-center justify-center"><iconify-icon icon="solar:bicycling-linear"></iconify-icon></div><span class="text-sm">Cycling</span></div>
<iconify-icon icon="solar:arrow-right-up-linear" class="text-[#888888]"></iconify-icon>
</button>
</section>
<!-- Weight Chart -->
<section class="col-span-1 md:col-span-2 md:row-span-2 rounded-[2rem] p-7 flex flex-col relative"
style="background: linear-gradient(145deg, #222222, #151515); box-shadow: 0 15px 35px -10px rgba(0,0,0,0.9);">
<header class="flex justify-between items-start mb-6">
<div class="flex items-center gap-4">
<div class="w-10 h-10 rounded-full bg-[#1A1A1A] flex items-center justify-center text-[#E88D5D]"
style="box-shadow: inset 0 2px 2px rgba(255,255,255,0.05);"><iconify-icon icon="solar:scale-linear"
width="1.2rem"></iconify-icon></div>
<div>
<p class="text-[10px] text-[#888888] uppercase tracking-widest">Target</p>
<h2 class="text-xl font-light text-[#F5F5F5]">72 KG</h2>
</div>
</div>
</header>
<div class="flex-1 relative min-h-[160px]">
<svg viewBox="0 0 400 200" preserveAspectRatio="none" class="absolute inset-0 w-full h-full overflow-visible">
<path d="M 0 160 C 80 160, 120 80, 200 120 C 280 160, 320 60, 400 100 L 400 200 L 0 200 Z" fill="url(#g)"
opacity="0.2" />
<path d="M 0 160 C 80 160, 120 80, 200 120 C 280 160, 320 60, 400 100" fill="none" stroke="#E88D5D"
stroke-width="3" />
<defs>
<linearGradient id="g" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#E88D5D" />
<stop offset="100%" stop-color="transparent" />
</linearGradient>
</defs>
</svg>
<div
class="absolute bottom-0 w-full flex justify-between text-[10px] text-[#666666] pt-4 border-t border-white/5">
<span>Jan</span><span>Mar</span><span>May</span><span>Jul</span></div>
</div>
</section>
</main>
<script>
(function() {
const canvas = document.getElementById('noiseCanvas');
const gl = canvas.getContext('webgl');
if (!gl) return;
const vs = gl.createShader(gl.VERTEX_SHADER);
gl.shaderSource(vs, 'attribute vec2 p; void main() { gl_Position = vec4(p, 0.0, 1.0); }');
gl.compileShader(vs);
const fs = gl.createShader(gl.FRAGMENT_SHADER);
gl.shaderSource(fs, 'precision lowp float; uniform float t; uniform vec2 r; float rd(vec2 c) { return fract(sin(dot(c, vec2(12.9, 78.2))) * 43758.5); } void main() { vec2 u = gl_FragCoord.xy / r; gl_FragColor = vec4(vec3(rd(u + t * 0.0001)), 1.0); }');
gl.compileShader(fs);
const pg = gl.createProgram();
gl.attachShader(pg, vs); gl.attachShader(pg, fs); gl.linkProgram(pg); gl.useProgram(pg);
const b = gl.createBuffer(); gl.bindBuffer(gl.ARRAY_BUFFER, b);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1,-1, 1,-1, -1,1, -1,1, 1,-1, 1,1]), gl.STATIC_DRAW);
const pL = gl.getAttribLocation(pg, 'p'); gl.enableVertexAttribArray(pL); gl.vertexAttribPointer(pL, 2, gl.FLOAT, false, 0, 0);
const tL = gl.getUniformLocation(pg, 't'), rL = gl.getUniformLocation(pg, 'r');
function render(time) {
canvas.width = window.innerWidth; canvas.height = window.innerHeight;
gl.viewport(0, 0, canvas.width, canvas.height);
gl.uniform1f(tL, time); gl.uniform2f(rL, canvas.width, canvas.height);
gl.drawArrays(gl.TRIANGLES, 0, 6); requestAnimationFrame(render);
}
requestAnimationFrame(render);
})();
</script>
</div>