Omkar KhadamkarAll work

Vela · Icons and motion · 2026 · In progress

When you copy something, the copy icon turns into a tick.

Copying an API key or an IP address, you need to know it worked without looking away. I sketched how the copy icon could become a tick. AI built and scored the options; I made the calls that shaped the final motion.

The problem

A copy button usually swaps its icon for a tick, or shows a small message. Both pull the eye away from the work.

My decision

Turn the copy icon's own lines into the tick, and only after the copy has really worked.

What's built

A working lab version, checked frame by frame against the design, at real speed and five times slower.

My part

The sketch the final motion came from, the pick at each round, and three details my eye caught.

  • With AISixteen first ideas, built and scored.
  • By handMy own sketch: the copy icon unwinds into a tick.
  • With AIMy sketch built five ways, frame by frame.
  • By handThree calls: bend one rule, turn about the corner, keep the lines crisp.

Recorded from the lab build in a browser. Not in the shipped design system yet.

  1. 01The first ideas all scored under 60%.The start
  2. 02The top-scoring idea had a small jump at the end. I spotted it by watching.Judgment
  3. 03I sketched my own version.By hand
  4. 04Following every motion rule needed about 42 extra pieces. Relaxing one rule needed none.The decision
  5. 05Two last changes, made by watching the builds side by side.Details
  6. 06Built and checked, waiting to ship.Where it stands

01The start

The first ideas all scored under 60%.

Three directions on day one: a soft swap, a fold into the tick, and a tick drawn by hand.

Three cards: A, soft swap, the copy glyph softens as the tick sharpens; B, fold into tick, the front sheet folds and the tick opens from its centre; C, drawn tick, drawn short arm first, which breaks one of the design system's motion rules. Each shown at 12, 16 and 20 pixels.
Each direction at three icon sizes. C needed a rule exception, so it was set aside for now.With AI · Vela icon lab, 29 Oct
Go deeper 1 min

The next round asked AI for thirteen ways to morph one shape into the other, borrowing from clock hands, calligraphy and stage magic, and scored them against eight criteria.

Four tied at the top. I picked M1, the "seated corner", from those four.

02Judgment

The top-scoring idea had a small jump at the end. I spotted it by watching.

In the last 40 milliseconds, the tick's corner snapped from round to sharp. I said it looked weird, and it was fixed.

The tick's corner magnified eight times at 200, 220, 239 and 240 milliseconds. Top row, as scored: the corner stays round, then snaps sharp at 240. Bottom row, refined: it arrives sharp smoothly.
The corner, eight times bigger. Top: the jump. Bottom: the fix.With AI, after I spotted it

A score can't see a 40 millisecond glitch. A person watching can.

03By hand

I sketched my own version.

Six frames in Figma: the front sheet tilts, its lines unwind, and what's left is a tick.

Six hand-drawn frames: two overlapping rounded squares; the front one tilts; it turns further and opens; its lines bend into a corner; most of the lines fall away; a tick remains.
My sketch, drawn as frames, not timings. AI chose the timings when it built it.By hand · 30 Oct, 17:02

04The decision

Following every motion rule needed about 42 extra pieces. Relaxing one rule needed none.

AI built my sketch five ways. The one that followed every motion rule needed about 42 fading pieces; the one I chose draws the lines exactly.

Two rows of frames from hover to 240 milliseconds. S4, within the rules: faint leftover beads linger at the corners. S5, drawn exactly: the lines retract cleanly into the tick.
Top: S4, inside the rules, with faint beads left behind. Bottom: S5, the one I approved.With AI (frames) · by hand (the choice), 17:48

I approved S5, and the one rule exception it needs: letting an icon's own lines draw on and off. It scored 91.2%, just above the best earlier option at 90.0%, but it was the cleaner motion that decided it.

05Details

Two last changes, made by watching the builds side by side.

Seeing the builds side by side, I changed where the sheet turns and how the leftover lines leave.

Before: the sheet turns about its centre, as first sketched. After: it turns about its corner.
Top: turning about the centre, as I first sketched. Bottom: about the corner, my change.By hand (the change) · 18:17

"It signifies the clear morphing and confidence, instead of the fuzzy feel of faint."

My note on why the lines stay crisp.

06Where it stands

Built and checked, waiting to ship.

The real build matches the design frame by frame. The motion rule it needs is released and the Copy pattern is public; the copy button itself is not built yet.

Two rows of frames from 0 to 240 milliseconds: the real build on top, the design's computed frames below. They match.
Top: the real build. Bottom: the design. Same frames.With AI · lab check
Done
  • Lab build, checked in Chrome, in Safari and on a phone
  • Keyboard: nothing moves, the tick just appears
  • The tick only shows after the copy really worked
  • The motion-rule exception, released in Vela 0.14
  • The Copy pattern, approved 31 October and public in the Vela playground
Waiting
  • The copy button spec (written, not public yet)
  • The button in Vela's code
Not checked
  • Firefox
  • Smoothness on real, slower devices
The Copy pattern's states in order: rest, hover, press, copied, away, return and marked. Failed is the other path from the press: no tick, the cause in words, and a way out.The Copy pattern's states in order: rest, hover, press, copied, away, return and marked. Failed is the other path from the press: no tick, the cause in words, and a way out.
Every state of a copy, from Vela's Copy pattern. The tick in this story is the Copied step.Vela · Copy pattern

This story is the motion. The rest is in Vela's Copy pattern. When a value gets a copy button, what exactly gets copied, and what a failed copy says are written there. It is approved and public in the Vela playground, marked Experimental, because the copy button it needs is not built yet. Read the Copy pattern

Who did what

MeThe sketch, the pick at every round, the jump I spotted, the rule exception I approved, and the two final changes.
AI (Claude Code)The ideas and their scores, the boards, five builds of my sketch, the lab version and these recordings.