Skip to content
OwnlyPlans

index.html.md

Complete code of the result in the video.

Part of Analytics overview dashboard by Admin

Download Open the item

index.html

The finished result as one file. Save it as index.html and open it.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Analytics overview dashboard</title><style>*{box-sizing:border-box;margin:0;padding:0}
html,body{width:1280px;height:720px;overflow:hidden}
body{font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
@property --n{syntax:'<integer>';inherits:false;initial-value:0}
.stage{position:absolute;inset:0;animation:cyc 8s linear infinite both}
@keyframes cyc{0%{opacity:0}4%{opacity:1}94%{opacity:1}100%{opacity:0}}
body:not(.go) *,body:not(.go) *::before,body:not(.go) *::after{animation-play-state:paused!important}
.cnt::after{content:counter(n)}.cnt{counter-reset:n var(--n)}
@media (prefers-reduced-motion:reduce){*{animation:none!important}}


body{background:#f3f1ff;color:#1c1840}
.side{position:absolute;left:0;top:0;bottom:0;width:84px;background:#1c1840;display:flex;flex-direction:column;align-items:center;gap:20px;padding-top:28px}
.side i{width:38px;height:38px;border-radius:12px;background:#2c2760}.side i:first-child{background:linear-gradient(135deg,#8b5cf6,#ec4899)}.side i.on{background:#8b5cf6}
.main{position:absolute;left:116px;right:40px;top:30px}
h1{font-size:26px;letter-spacing:-.03em}.sub{font-size:13px;color:#7a76a8;margin:4px 0 20px}
.kp{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.k{background:#fff;border-radius:18px;padding:16px 18px;box-shadow:0 14px 30px -22px #3b2f9a;animation:rs 8s infinite both}
.k:nth-child(2){animation-delay:.1s}.k:nth-child(3){animation-delay:.2s}.k:nth-child(4){animation-delay:.3s}
@keyframes rs{0%,3%{opacity:0;transform:translateY(14px)}10%,100%{opacity:1;transform:none}}
.k small{font-size:12px;color:#7a76a8}.k b{display:block;font-size:30px;letter-spacing:-.03em;margin:4px 0}.k em{font-style:normal;font-size:12px;font-weight:700;color:#16a34a}.k em.d{color:#e11d48}
.a1{animation:a1 8s infinite both}.a2{animation:a2 8s infinite both}.a3{animation:a3 8s infinite both}.a4{animation:a4 8s infinite both}
@keyframes a1{0%,6%{--n:0}34%,100%{--n:48210}}@keyframes a2{0%,6%{--n:0}34%,100%{--n:9380}}@keyframes a3{0%,6%{--n:0}34%,100%{--n:312}}@keyframes a4{0%,6%{--n:0}34%,100%{--n:68}}
.grid{display:grid;grid-template-columns:1.7fr 1fr;gap:16px;margin-top:16px}
.card{background:#fff;border-radius:20px;padding:20px 22px;height:300px;box-shadow:0 14px 30px -22px #3b2f9a;position:relative}
.card h3{font-size:14px;margin-bottom:6px}.card p{font-size:12px;color:#7a76a8}
svg{position:absolute;left:18px;bottom:14px}
.ln{stroke-dasharray:900;stroke-dashoffset:900;animation:dr 8s infinite both}
@keyframes dr{0%,12%{stroke-dashoffset:900}44%,100%{stroke-dashoffset:0}}
.ar{opacity:0;animation:ar 8s infinite both}@keyframes ar{0%,30%{opacity:0}46%,100%{opacity:1}}
.pt{opacity:0;animation:pt 8s infinite both}@keyframes pt{0%,42%{opacity:0;transform:scale(0)}48%,100%{opacity:1;transform:scale(1)}}
.bars{position:absolute;left:24px;right:24px;bottom:22px;height:190px;display:flex;align-items:flex-end;gap:12px}
.bars i{flex:1;border-radius:9px 9px 3px 3px;background:linear-gradient(#8b5cf6,#c4b5fd);height:var(--h);transform-origin:bottom;animation:bg 8s infinite both}
@keyframes bg{0%,14%{transform:scaleY(0)}40%,100%{transform:scaleY(1)}}
.tkr{position:absolute;left:116px;right:40px;bottom:26px;height:52px;background:#1c1840;color:#e9e5ff;border-radius:16px;overflow:hidden;font-size:14px}
.tkr div{position:absolute;left:22px;top:0;line-height:52px;opacity:0;animation:tk 8s infinite both}
.tkr div:nth-child(2){animation-delay:2.2s}.tkr div:nth-child(3){animation-delay:4.4s}
@keyframes tk{0%{opacity:0;transform:translateY(16px)}5%,22%{opacity:1;transform:none}28%,100%{opacity:0;transform:translateY(-16px)}}
.tkr b{color:#a78bfa}
</style></head><body><div class="stage">
<div class="side"><i></i><i class="on"></i><i></i><i></i><i></i></div>
<div class="main"><h1>Analytics overview</h1><div class="sub">Last 30 days · all channels</div>
<div class="kp"><div class="k"><small>Visitors</small><b><span class="cnt a1"></span></b><em>▲ 12.4%</em></div><div class="k"><small>Signups</small><b><span class="cnt a2"></span></b><em>▲ 8.1%</em></div><div class="k"><small>Paying teams</small><b><span class="cnt a3"></span></b><em>▲ 21%</em></div><div class="k"><small>Churn</small><b><span class="cnt a4"></span><small>bps</small></b><em class="d">▼ 0.3%</em></div></div>
<div class="grid"><div class="card"><h3>Revenue growth</h3><p>Weekly recurring revenue</p>
<svg width="620" height="200" viewBox="0 0 620 200"><defs><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#8b5cf6" stop-opacity=".35"/><stop offset="1" stop-color="#8b5cf6" stop-opacity="0"/></linearGradient></defs>
<path class="ar" d="M0 170 C60 150 90 160 130 120 S210 130 260 90 S350 100 400 60 S500 70 540 36 L600 24 L600 200 L0 200Z" fill="url(#g)"/>
<path class="ln" d="M0 170 C60 150 90 160 130 120 S210 130 260 90 S350 100 400 60 S500 70 540 36 L600 24" fill="none" stroke="#8b5cf6" stroke-width="4" stroke-linecap="round"/>
<circle class="pt" cx="600" cy="24" r="8" fill="#fff" stroke="#8b5cf6" stroke-width="4" style="transform-origin:600px 24px"/></svg></div>
<div class="card"><h3>Signups by channel</h3><p>Organic leads the pack</p><div class="bars"><i style="--h:60%"></i><i style="--h:92%;animation-delay:.06s"></i><i style="--h:44%;animation-delay:.12s"></i><i style="--h:76%;animation-delay:.18s"></i><i style="--h:34%;animation-delay:.24s"></i><i style="--h:58%;animation-delay:.3s"></i></div></div></div></div>
<div class="tkr"><div><b>●</b> New signup · Priya from Orbit Retail upgraded to Team</div><div><b>●</b> Milestone · 300 paying teams reached</div><div><b>●</b> Alert · Churn is at a 6-month low</div></div></div><script>window.start=function(){document.body.classList.add("go")};if(!/[?&]rec/.test(location.search))start();</script></body></html>
Source, 56 lines
# index.html

The finished result as one file. Save it as index.html and open it.

```html
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Analytics overview dashboard</title><style>*{box-sizing:border-box;margin:0;padding:0}
html,body{width:1280px;height:720px;overflow:hidden}
body{font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
@property --n{syntax:'<integer>';inherits:false;initial-value:0}
.stage{position:absolute;inset:0;animation:cyc 8s linear infinite both}
@keyframes cyc{0%{opacity:0}4%{opacity:1}94%{opacity:1}100%{opacity:0}}
body:not(.go) *,body:not(.go) *::before,body:not(.go) *::after{animation-play-state:paused!important}
.cnt::after{content:counter(n)}.cnt{counter-reset:n var(--n)}
@media (prefers-reduced-motion:reduce){*{animation:none!important}}


body{background:#f3f1ff;color:#1c1840}
.side{position:absolute;left:0;top:0;bottom:0;width:84px;background:#1c1840;display:flex;flex-direction:column;align-items:center;gap:20px;padding-top:28px}
.side i{width:38px;height:38px;border-radius:12px;background:#2c2760}.side i:first-child{background:linear-gradient(135deg,#8b5cf6,#ec4899)}.side i.on{background:#8b5cf6}
.main{position:absolute;left:116px;right:40px;top:30px}
h1{font-size:26px;letter-spacing:-.03em}.sub{font-size:13px;color:#7a76a8;margin:4px 0 20px}
.kp{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.k{background:#fff;border-radius:18px;padding:16px 18px;box-shadow:0 14px 30px -22px #3b2f9a;animation:rs 8s infinite both}
.k:nth-child(2){animation-delay:.1s}.k:nth-child(3){animation-delay:.2s}.k:nth-child(4){animation-delay:.3s}
@keyframes rs{0%,3%{opacity:0;transform:translateY(14px)}10%,100%{opacity:1;transform:none}}
.k small{font-size:12px;color:#7a76a8}.k b{display:block;font-size:30px;letter-spacing:-.03em;margin:4px 0}.k em{font-style:normal;font-size:12px;font-weight:700;color:#16a34a}.k em.d{color:#e11d48}
.a1{animation:a1 8s infinite both}.a2{animation:a2 8s infinite both}.a3{animation:a3 8s infinite both}.a4{animation:a4 8s infinite both}
@keyframes a1{0%,6%{--n:0}34%,100%{--n:48210}}@keyframes a2{0%,6%{--n:0}34%,100%{--n:9380}}@keyframes a3{0%,6%{--n:0}34%,100%{--n:312}}@keyframes a4{0%,6%{--n:0}34%,100%{--n:68}}
.grid{display:grid;grid-template-columns:1.7fr 1fr;gap:16px;margin-top:16px}
.card{background:#fff;border-radius:20px;padding:20px 22px;height:300px;box-shadow:0 14px 30px -22px #3b2f9a;position:relative}
.card h3{font-size:14px;margin-bottom:6px}.card p{font-size:12px;color:#7a76a8}
svg{position:absolute;left:18px;bottom:14px}
.ln{stroke-dasharray:900;stroke-dashoffset:900;animation:dr 8s infinite both}
@keyframes dr{0%,12%{stroke-dashoffset:900}44%,100%{stroke-dashoffset:0}}
.ar{opacity:0;animation:ar 8s infinite both}@keyframes ar{0%,30%{opacity:0}46%,100%{opacity:1}}
.pt{opacity:0;animation:pt 8s infinite both}@keyframes pt{0%,42%{opacity:0;transform:scale(0)}48%,100%{opacity:1;transform:scale(1)}}
.bars{position:absolute;left:24px;right:24px;bottom:22px;height:190px;display:flex;align-items:flex-end;gap:12px}
.bars i{flex:1;border-radius:9px 9px 3px 3px;background:linear-gradient(#8b5cf6,#c4b5fd);height:var(--h);transform-origin:bottom;animation:bg 8s infinite both}
@keyframes bg{0%,14%{transform:scaleY(0)}40%,100%{transform:scaleY(1)}}
.tkr{position:absolute;left:116px;right:40px;bottom:26px;height:52px;background:#1c1840;color:#e9e5ff;border-radius:16px;overflow:hidden;font-size:14px}
.tkr div{position:absolute;left:22px;top:0;line-height:52px;opacity:0;animation:tk 8s infinite both}
.tkr div:nth-child(2){animation-delay:2.2s}.tkr div:nth-child(3){animation-delay:4.4s}
@keyframes tk{0%{opacity:0;transform:translateY(16px)}5%,22%{opacity:1;transform:none}28%,100%{opacity:0;transform:translateY(-16px)}}
.tkr b{color:#a78bfa}
</style></head><body><div class="stage">
<div class="side"><i></i><i class="on"></i><i></i><i></i><i></i></div>
<div class="main"><h1>Analytics overview</h1><div class="sub">Last 30 days · all channels</div>
<div class="kp"><div class="k"><small>Visitors</small><b><span class="cnt a1"></span></b><em>▲ 12.4%</em></div><div class="k"><small>Signups</small><b><span class="cnt a2"></span></b><em>▲ 8.1%</em></div><div class="k"><small>Paying teams</small><b><span class="cnt a3"></span></b><em>▲ 21%</em></div><div class="k"><small>Churn</small><b><span class="cnt a4"></span><small>bps</small></b><em class="d">▼ 0.3%</em></div></div>
<div class="grid"><div class="card"><h3>Revenue growth</h3><p>Weekly recurring revenue</p>
<svg width="620" height="200" viewBox="0 0 620 200"><defs><linearGradient id="g" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#8b5cf6" stop-opacity=".35"/><stop offset="1" stop-color="#8b5cf6" stop-opacity="0"/></linearGradient></defs>
<path class="ar" d="M0 170 C60 150 90 160 130 120 S210 130 260 90 S350 100 400 60 S500 70 540 36 L600 24 L600 200 L0 200Z" fill="url(#g)"/>
<path class="ln" d="M0 170 C60 150 90 160 130 120 S210 130 260 90 S350 100 400 60 S500 70 540 36 L600 24" fill="none" stroke="#8b5cf6" stroke-width="4" stroke-linecap="round"/>
<circle class="pt" cx="600" cy="24" r="8" fill="#fff" stroke="#8b5cf6" stroke-width="4" style="transform-origin:600px 24px"/></svg></div>
<div class="card"><h3>Signups by channel</h3><p>Organic leads the pack</p><div class="bars"><i style="--h:60%"></i><i style="--h:92%;animation-delay:.06s"></i><i style="--h:44%;animation-delay:.12s"></i><i style="--h:76%;animation-delay:.18s"></i><i style="--h:34%;animation-delay:.24s"></i><i style="--h:58%;animation-delay:.3s"></i></div></div></div></div>
<div class="tkr"><div><b>●</b> New signup · Priya from Orbit Retail upgraded to Team</div><div><b>●</b> Milestone · 300 paying teams reached</div><div><b>●</b> Alert · Churn is at a 6-month low</div></div></div><script>window.start=function(){document.body.classList.add("go")};if(!/[?&]rec/.test(location.search))start();</script></body></html>
```

Your AI tool
Starter prompt

		

Download the plan