Line Modification
CSSA circular icon containing an edit cursor blinks and draws a small pencil line that transforms into a checkmark.
- Tier
- CSS
- Dependencies
- None
- Duration
- 5.5 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Documents and files, Workflow and approvals
- Industries
- SaaS and software, Cross-industry
- Style
- Minimal line · light stroke
- Set
- changelog
- Tags
- circlelineloopminimalui
Companion assets
The same artwork, not animated. Derived from the entry’s own resting state, so it matches exactly.
Code
animation.svg
<svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-hidden="true" class="pulsar pulsar-changelog-modification" data-pulsar="changelog-modification" viewBox="0 0 160 96"><circle cx="80" cy="48" r="26" fill="currentColor" fill-opacity=".03" stroke="currentColor" stroke-width="1.2"></circle><line x1="32" x2="50" y1="48" y2="48" stroke="currentColor" stroke-linecap="round" stroke-width="1.2" opacity=".3"></line><line x1="110" x2="128" y1="48" y2="48" stroke="currentColor" stroke-linecap="round" stroke-width="1.2" opacity=".3"></line><g id="changelog-modification-pen" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"><path fill="currentColor" fill-opacity=".1" d="m72 58-4 4 4-1 16-16-3-3Z"></path></g><path id="changelog-modification-check" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m70 48 7 7 15-15"></path><line id="changelog-modification-cursor" x1="94" x2="94" y1="42" y2="54" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-width="1.8"></line></svg>
animation.css
.pulsar-changelog-modification #changelog-modification-pen {
animation: changelog-modification-draw-pen 5500ms cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@keyframes changelog-modification-draw-pen {
0%,
15% {
opacity: 0;
transform: translate(-10px, 10px);
}
25%,
45% {
opacity: 1;
transform: translate(0, 0);
}
55%,
100% {
opacity: 0;
transform: translate(8px, -8px);
}
}
.pulsar-changelog-modification #changelog-modification-check {
animation: changelog-modification-draw-check 5500ms cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@keyframes changelog-modification-draw-check {
0%,
35% {
stroke-dasharray: 0 40;
opacity: 0;
}
45%,
82% {
stroke-dasharray: 40 0;
opacity: 1;
}
92%,
100% {
stroke-dasharray: 0 40;
opacity: 0;
}
}
.pulsar-changelog-modification #changelog-modification-cursor {
animation: changelog-modification-blink 5500ms step-start infinite;
}
@keyframes changelog-modification-blink {
0%,
10%,
20%,
30% {
opacity: 1;
}
5%,
15%,
25%,
35% {
opacity: 0;
}
40%,
100% {
opacity: 0;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-changelog-modification * {
animation: none !important;
}
}