A compact, self‑contained checklist widget featuring a dynamic progress ring that updates as items are completed, designed for dark‑mode interfaces.
★ 0 community votes · Safety scan passed · Sandboxed previewChecklist Card with Progress Ring is an interface component generated on MorphCanvas, an infinite AI workspace that turns written intent into reviewable HTML, CSS, and JavaScript widgets. This component passed MorphCanvas’s automated safety scan, which checks for unsafe patterns such as external network calls, storage access, inline event handlers, and code execution, and it is rendered here inside a sandboxed preview frame.
A creator described the result they wanted, MorphCanvas routed the request through its AI provider chain with automatic failover, scanned the generated code, and published the reviewed component to the public library. You can build and publish your own components on the MorphCanvas canvas.
<div class="checklist-card" role="region" aria-labelledby="card-title"><h2 id="card-title" class="card-title">Task List</h2><svg class="progress-ring" width="80" height="80" viewBox="0 0 100 100"><circle class="progress-ring__circle" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" stroke="#4caf50" stroke-width="8" fill="none" r="45" cx="50" cy="50"/></svg><ul class="checklist"><li><label><input type="checkbox" class="check-item"> Item 1</label></li><li><label><input type="checkbox" class="check-item"> Item 2</label></li><li><label><input type="checkbox" class="check-item"> Item 3</label></li></ul></div>
:root{--bg:#2e2e2e;--text:#f0f0f0;--accent:#4caf50;} .checklist-card{background:var(--bg);color:var(--text);padding:1rem;border-radius:8px;max-width:300px;margin:auto;font-family:sans-serif;position:relative;} .card-title{margin:0 0 .5rem;} .progress-ring{position:absolute;top:10px;right:10px;width:80px;height:80px;} .progress-ring__circle{stroke-dasharray:282.743;stroke-dashoffset:282.743;transition:stroke-dashoffset .3s;} .checklist{list-style:none;padding:0;margin:0;} .checklist li{margin-bottom:.5rem;} .check-item{margin-right:.5rem;}
document.addEventListener('DOMContentLoaded',()=>{const circle=document.querySelector('.progress-ring__circle');const radius=45;const circumference=2*Math.PI*radius;circle.style.strokeDasharray=circumference;circle.style.strokeDashoffset=circumference;const checkboxes=document.querySelectorAll('.check-item');const update=()=>{const checked=document.querySelectorAll('.check-item:checked').length;const percent=checked/checkboxes.length;const offset=circumference*(1-percent);circle.style.strokeDashoffset=offset;circle.setAttribute('aria-valuenow',Math.round(percent*100));};checkboxes.forEach(cb=>cb.addEventListener('change',update));update();});
Build your own on MorphCanvas