ui lab / by xevrion

Things I made because I liked how they felt

Not a library, just a lab. Small interaction experiments I built in React while learning motion and detail. Each one has a live demo and its source, if you want to see how it works.

178 components

  • Pressto search

    Keycap hint new

    Keycaps that sink when you press the real keys.

    source
  • Caps lock warning new

    A small caps lock key with its light on slides into the field when caps is on.

    source
  • Eye toggle new

    The eye shuts when your password is hidden and watches while you type.

    source
  • Today

    Scribble checkbox new

    Checks itself off with a quick pen stroke and strikes the words through.

    source
  • Inbox, 8 unread

    Badge counter new

    Rolls its digits the way the count moved and bumps each time it changes.

    source
  • Star button new

    Spins once and throws off tiny sparks when starred, then rolls the count.

    source
    • Ava
    • Ben
    • Cara

    Follow button new

    Turns its plus into a check as you follow, and warns before you unfollow.

    source
  • Live, about 1,284 watching

    Live indicator new

    Breathes while live, lets the viewer count drift, and blinks hollow while reconnecting.

    source
  • Mini clock new

    A tiny analog clock that sweeps in its city's time and turns dark after sundown.

    source
  • LoadingLoadingLoading

    Pixel loader new

    A tiny pixel grid that cycles spiral, snake, pulse and checker, then draws a check when done.

    source
  • try dragging this!

    Arrow callout new

    A handwritten note whose arrow draws itself to whatever it points at.

    source
  • Tap listen to talk

    Voice orb new

    A glassy orb of drifting mist that listens to your real mic, thinks in a slow swirl and breathes as it speaks.

    source
  • Maya ChenIncoming video callMaya Chen is calling

    Call widget new

    Accept turns into hang-up as the call controls unfold out of it, one by one.

    source
  • The stack

    The tools behind the lab

    Logo orbit new

    Logos orbit a heading on tilted rings, passing behind it, and brake to a stop when you point.

    source
  • 0

    Odometer

    Rolls forward like a mechanical counter and wraps from 999 back to 000.

    source
  • Hold to delete

    Fills slowly while you commit to it, snaps back the moment you let go.

    source
  • Segmented control

    The pill stretches toward your pick like an inchworm, recoloring each label as its edge crosses.

    source
  • ui lab004
    xevrion2026

    Tilt card

    Leans toward your cursor with a glare that follows the light.

    source
  • Dock

    Icons swell as your cursor nears them, and launch with a macOS-style bounce.

    source
  • Sheet

    Drag it down or flick it away; pull it up and it pushes back.

    source
    1. Toast stack

      Stacks with depth, fans out on hover, and each toast's edge drains as its timer.

      source
    2. Elastic slider

      Stretches like rubber when you drag past the end, then springs back.

      source
    3. Magnetic button

      Stretches toward your cursor like soft rubber on a magnet, then wobbles home.

      source
    4. 01

      Exits are quicker than entrances.

      Arrive with care, leave out of the way.

      Swipe deck

      Fling a card away and the rest of the deck steps forward.

      source
    5. $ bun add motion

      Copy button

      The two pages merge into one before a check draws itself in.

      source
    6. Projects

      Press / to search

      Expanding search

      Opens from a circle into a search field, and closes faster than it opens.

      source
    7. A collection of small interface components, each built to get the details right: timing, easing, focus and both themes.

      React with Tailwind, CSS transitions wherever they can do the job, and Motion only for springs and gestures CSS cannot express.

      Yes. Every component is a single file with no setup, so copy it into your project and adjust the tokens to match.

      It does. Movement drops out and only gentle fades remain, so every state change is still clear without anything sliding around.

      Accordion

      Answers unfold from under their question like a folded flap, and the row you clicked never moves.

      source

      Expanding card

      Grows from its slot into a detail view and folds back when you are done.

      source
    8. Try 123456

      OTP input

      Six slots mirror one real input, so paste and SMS autofill just work.

      source
    9. Toggle switch

      Leans into the move when pressed, then springs across and squashes on landing.

      source
    10. Command palette

      Opens on ⌘K and filters commands as you type.

      source
      • Nuvole bianche5:57
      • Holocene5:37
      • Retrograde3:43
      • Weightless8:09
      • Svefn-g-englar10:04

      Press Space to pick up. While holding, use the arrow keys to move, Space to drop, or Escape to cancel.

      Reorder list

      Picks rows up by the handle and slides the rest out of the way.

      source
    11. Compare slider

      Drag the line to see what polish actually changes.

      source
    12. Step 1 of 3

      Name your workspace

      You can change this later.

      Step 1 of 3, Name

      Multi-step form

      Slides between steps while the card grows around each one.

      source
    13. Upload button

      Shrinks into a progress ring, fills, then checks off.

      source
    14. Scan the toolbar, not the docs.

      Tooltip group

      One tooltip slides from button to button and reshapes around each label.

      source
    15. Dropdown menu

      Grows out of its trigger, and press, drag, release picks an item like a native menu.

      source
    16. 00:12

      Dynamic island

      Morphs between live states with a springy, Apple-style bounce.

      source
    17. Transform

      Scrub input

      Drag the label and a tape measure runs under the needle, or just type.

      source
    18. How was your stay?

      Star rating

      Hover to preview, click to commit with a little pop.

      source
    19. Like button

      Pops, bursts and rolls the count when you like.

      source
    20. 3 projects are live. Build times are down 12% since last week.

      Sliding tabs

      An underline stretches toward the tab you pick while a soft pill follows your pointer.

      source
    21. 01

      Inbox zero

      Everything triaged before lunch.

      02

      Focus time

      Two quiet hours blocked every morning.

      03

      Weekly review

      Friday at four, fifteen minutes.

      04

      Shared lists

      Groceries, synced with Sam.

      05

      Offline mode

      Works on the train, syncs later.

      Page dots

      A pill that inches between pages like a worm and counts down to the next.

      source
    22. Home

      Everything that moved since you last checked in.

      • Q3 planning notesEdited 2h ago
      • Onboarding checklistEdited yesterday
      • Design reviewEdited Monday

      Collapsible sidebar

      Folds down to an icon rail, with labels that step aside before it closes.

      source
    23. Snap carousel

      Snaps cards to center, drags with the mouse, and each card acts out its motion principle.

      source
    24. Loading profile

      Skeleton loader

      Holds the exact shape of what is coming, so nothing jumps.

      source
    25. Press Shift F10 for actions

      Right-click anywhere

      Long-press on touch, Shift F10 from the keyboard

      Context menu

      Opens at your cursor and grows from it.

      source
    26. Notification bell

      Rings when something new arrives, and the badge rolls up with each one.

      source
    27. Avatar stack

      Fans open when you reach for it, with a name above each face.

      source
    28. Morphing button

      Shrinks into a spinner while it saves, then answers with a check or a shake.

      source

      Press Space to pick up. While holding, use the arrow keys to move within or between columns, Space to drop, or Escape to cancel.

      Kanban board

      Lift a card and the others slide aside to make room for it.

      source
    29. Color swatches

      The ring glides to the color you pick and the color floods the preview from that side.

      source
    30. Mini calendar

      Months slide past in the direction you travel.

      source
    31. Floating label

      The label peels up letter by letter, and never covers what you wrote.

      source
      • 8 or more characters, not met
      • A number, not met
      • A symbol, not met

      Password field

      Reveals the password with a wave of dots turning into letters; the meter fills as it gets stronger.

      source
      • Hold to deleteMotion
      • Elastic sliderInput
      • Swipe deckMotion
      • Segmented controlInput
      • Stacked drawerLayout
      • OdometerMotion
      • OTP inputInput
      • Snap carouselLayout
      • Toast stackMotion
      • Kanban boardLayout
      • Copy buttonInput

      Filter list

      Rows fade out of the way while the rest slide up to close the gap.

      source
    32. Gauge

      Ticks light up as the value sweeps in, and a peak marker holds where it was before falling.

      source
    33. Response time

      107 ms

      -13 ms vs Aug 25

      Response time
      DayValue
      Aug 25120 ms
      Aug 26112 ms
      Aug 27121 ms
      Aug 28125 ms
      Aug 29126 ms
      Aug 30124 ms
      Aug 31124 ms
      Sep 1120 ms
      Sep 2121 ms
      Sep 3126 ms
      Sep 4122 ms
      Sep 5116 ms
      Sep 6121 ms
      Sep 7122 ms
      Sep 8116 ms
      Sep 9114 ms
      Sep 10111 ms
      Sep 11112 ms
      Sep 12109 ms
      Sep 13118 ms
      Sep 14114 ms
      Sep 15121 ms
      Sep 16116 ms
      Sep 17109 ms
      Sep 18104 ms
      Sep 19100 ms
      Sep 20101 ms
      Sep 21106 ms
      Sep 2299 ms
      Sep 23107 ms

      Sparkline

      Draws itself in, then scrubs to the nearest point under your cursor.

      source
    34. Focus hours

      36.7 h

      Bar chart

      Grows its bars from the baseline and springs them between two weeks.

      source
    35. Drafts

      Launch notes

      Three fixes, one new component, and a faster index. Ship Thursday after review.

      Stacked drawer

      Stacks iOS sheets that push the page back and drag down to dismiss.

      source
    36. Click to celebrate, or hold for a bigger one.

      Confetti button

      A click pops confetti; hold it and the fuse burns until the whole thing blows.

      source
      • motion
      • design
      • react

      Press Enter or comma to add. Backspace twice removes the last tag.

      Tag input

      Your typed words stay put while a chip forms around them.

      source
    37. Price$200 to $750

      Range slider

      Two thumbs that glide, stop at each other, and show their value as you drag.

      source
      • Linen shirtOat, M · $48.00
      • Canvas toteNatural · $24.00
      • Wool socksCharcoal, 2 pack · $12.50
      Total$133.50

      Number stepper

      Rolls each digit the way the count moves, and speeds up the longer you hold.

      source
    38. Time zone
      Week starts on

      Select menu

      Opens with your current choice sitting exactly on the button, macOS style.

      source
      • Q3 roadmap.pdf2.4 MB, edited 2h ago
      • Invoice 0142.pdf86 KB, edited yesterday
      • Team offsite.jpg4.1 MB, edited Monday
      • Interview notes.md12 KB, edited Aug 29

      Undo toast

      Deletes instantly and gives you five seconds to change your mind.

      source
      • File dropzone

        Its dashed edge marches when a file enters the window and seals solid when it is overhead.

        source
      • MayaOnline
        • Maya: Hey! Did the new build go out?

        • Maya: Design wants to see the drawer changes.

        • You: Just shipped it

        • You: The spring on the sheet feels a lot better now

        • Maya: Nice, checking it on my phone

        Chat thread

        Replies arrive after a beat of typing, and the thread follows only if you are.

        source
        • Loading, spinner
          Spinner
        • Loading, dots
          Dots
        • Loading, progress
          Progress
        • Loading, skeleton
          Skeleton

        Click a tile to see how it finishes

        Loader set

        Four loaders that each know how to finish: leapfrog dots, an inchworm bar, a ring that closes into a check.

        source
      • 1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        00
        01
        02
        03
        04
        05
        06
        07
        08
        09
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        28
        29
        30
        31
        32
        33
        34
        35
        36
        37
        38
        39
        40
        41
        42
        43
        44
        45
        46
        47
        48
        49
        50
        51
        52
        53
        54
        55
        56
        57
        58
        59
        AM
        PM
        7:30AM

        Wheel picker

        Spins through the hours on a curved drum, just like iOS.

        source
      • Drag to the end, or press Enter

        Slide to confirm

        Drag the knob all the way across to confirm.

        source
      • Following

        Ava Chen@ava · 7m

        Shipped the new onboarding today. Two screens instead of five.

        Ben Ortiz@ben · 14m

        Hot take: most loading spinners should be skeletons.

        Cara Nwosu@cara · 21m

        Springs over durations for anything you can touch. Every time.

        Dev Patel@dev · 28m

        Rewrote the settings page with plain CSS grid. Deleted 400 lines.

        Fay Laurent@fay · 35m

        The best animation is often the one you remove.

        Ava Chen@ava · 42m

        Anyone else test gestures at 10% speed? It changes everything.

        Ben Ortiz@ben · 49m

        Tabular numbers in every table, please.

        Cara Nwosu@cara · 56m

        Friday demo went well. The drag-to-reorder finally feels right.

        Pull to refresh

        Pull the feed down and new posts slide in at the top.

        source
      • Last week shipped the new motion guidelines, rebuilt the gesture system on top of them, and is already writing the docs. Hover a name to meet them.

        Hover card

        One card travels between names as you hover them.

        source
        • src
          • app
            • layout.tsx
            • page.tsx
            • globals.css
        • package.json
        • README.md

        Tree view

        Folders unfold in place while the selection glides to the file you pick.

        source
      • Starter

        For side projects.

        $9 per month

        • 3 projects
        • Basic analytics
        • Email support

        Pro

        Popular

        For growing products.

        $24 per month

        • Unlimited projects
        • Full analytics
        • Priority support

        Team

        For whole companies.

        $59 per month

        • Everything in Pro
        • Shared workspaces
        • SSO and audit log

        Pricing toggle

        Each digit rolls to its new price on its own, and new digits grow in.

        source
      • Design notes2 min left

        Motion people never notice

        Most interface motion goes unnoticed, and that is the goal. When a menu opens from the button you pressed, or a toast leaves the way it came in, nobody stops to admire it. They simply understand what happened and carry on. Good motion answers a question before the user thinks to ask it.

        Bad motion is the opposite. It asks for attention it has not earned. A dialog that takes half a second to appear feels slow even when the network is instant, and a list that staggers in on every visit turns a quick glance into a small wait. The cost is paid every single time the thing happens.

        Start from frequency

        The first question is how often someone will see an animation. Something used a hundred times a day, like a command palette, should appear at once. Something seen a few times a day, like a drawer or a modal, can take around two hundred milliseconds. Something rare, like finishing onboarding, has room for a little delight.

        Easing matters as much as duration. An ease-out curve moves quickly at the start, so the interface responds the moment you act, then settles gently. An ease-in curve does the reverse and feels sluggish, because the slow part lands exactly when you are watching most closely.

        Motion as explanation

        The best animations explain structure. A panel that slides in from the right tells you it can be dismissed by sliding it back. A highlight that glides between tabs tells you the tabs belong together. Change the element without motion and you lose that small lesson about how the interface is built.

        Finally, motion should always be interruptible. People change their minds mid-gesture, click twice, or press Escape halfway through an opening. Transitions and springs can reverse from wherever they are; fixed keyframes restart from zero and feel broken. Build for the interruption and the rest tends to follow.

        Reading progress

        A progress bar fills as you read while the time left counts down.

        source
      • import { cn } from "@/lib/cn";
        type ButtonProps = React.ComponentProps<"button">;
        // Scales to 0.96 on press, so the click feels physical.
        export function Button({ className, ...props }: ButtonProps) {
        return (
        <button
        className={cn("h-10 rounded-full px-4 transition-[scale] duration-150 active:scale-[0.96]", className)}
        {...props}
        />
        );
        }
        export default function Demo() {
        return <Button onClick={() => console.log(42)}>Save</Button>;
        }
        /* Strong ease-out: responds at once, then settles. */
        .button {
        height: 40px;
        padding: 0 16px;
        border-radius: 999px;
        transition: scale 150ms cubic-bezier(0.23, 1, 0.32, 1), background-color 150ms ease;
        }
        .button:active {
        scale: 0.96;
        }
        @media (prefers-reduced-motion: reduce) {
        .button {
        transition: background-color 150ms ease;
        }
        }

        Code block

        Switch files with a sliding underline and copy with one click.

        source
      • A decorative grid of dots that swell and move away from the pointer. Clicking sends a ring outward through the grid.

        Dot grid

        Dots swell and part around your cursor, and a click sends a shockwave.

        source
      • Instant sync

        Edits land on every device before you switch tabs.

        Works offline

        Keep writing on a plane. Changes merge when you reconnect.

        End-to-end encrypted

        Only you and the people you invite can read your notes.

        Full history

        Step back to any version, down to the keystroke.

        Spotlight card

        The cursor is a lamp: cards catch its glow and their icons cast shadows away from it.

        source
      • 1 / 5

        12k. People tried the lab this week.

        Story progress

        Tap through stories, hold to pause.

        source
      • webReadymain1m 34sSep 22
        api-gatewayBuildingfeat/rate-limit3m 32sSep 23
        docsReadymain41sSep 19
        billingErrorfix/invoice-tz2m 37sSep 21
        authReadyrelease/2.42m 08sSep 17
        searchQueuedchore/deps-Sep 23
        analyticsReadymain5m 05sSep 14
        mailerReadyfeat/digest1m 16sSep 20

        Data table

        Sorts, selects and bulk-acts on rows without losing its place.

        source
      • Combobox

        The person you pick flies out of the list and into the field.

        source
      • No dates selected

        Pick a start date

        Date range picker

        Paints the range as you hover, then commits it on the second click.

        source
      • @ava · Lisbon

        Inline edit

        Edits your name and bio in place without moving a pixel.

        source
      • northwind-web

        Deployed 2 hours ago

        Dialog

        Opens a modal over the page, with a confirmation that stacks on top of it.

        source
      • Showing 1-5 of 100

        • Harbor SupplyINV-1001$119.19
        • DriftlineINV-1002$198.38
        • Kestrel AirINV-1003$277.57
        • Granite WorksINV-1004$356.76
        • Cobalt & CoINV-1005$435.95

        Pagination

        Numbers roll in place like an odometer; the one you click never moves.

        source
      • Deploys now build twice as fast.

        See what changed
        NorthwindOverviewSettings

        Overview

        Three deploys today, all healthy.

        Requests

        1.2M

        Latency

        84 ms

        Errors

        0.02%

        Announcement banner

        Dismissing folds the bar away and the page slides up to fill the gap.

        source
      • Shortcut sheet

        Press ? anywhere to see every shortcut, then press one to watch it light up.

        source
      • Drag the ball and let go, or press Play.

        0s0.25s0.5s0.75s1stargetPosition over time, from rest
        Settles
        0.51s
        Overshoot
        None
        Damping ratio
        1.01
        Behaviour
        Critically damped

        Menus, toggles, anything clicked all day. Fast and never overshoots.

        500
        How hard it pulls to the target
        45.0
        How fast the motion dies out
        1.0
        Heavier is slower and swings longer

        Roughly visualDuration 0.25, bounce 0 in perceptual terms.

        { type: "spring", stiffness: 500, damping: 45 }

        Spring playground

        Tune a spring and watch its overshoot and settle, plotted live.

        source
      • Drag a handle. Arrow keys nudge, Shift more.

        Preview

        Things entering or answering a click: dropdowns, toasts, modals. The fast start feels instant.

        cubic-bezier(0.23, 1, 0.32, 1)

        Easing editor

        Drag a cubic-bezier into shape and see it move.

        source
      • 30 to 80ms per item feels natural. Longer starts to feel slow.

        Each row is a tile, in grid orderDone at 850ms

        Last tile finishes at 850 milliseconds.

        50ms
        Easingease-out
        Direction

        Natural. Reads as a sequence without waiting.

        Delay = position in the list × delay per item.

        Stagger visualizer

        Shows what per-item delay actually does to a list entrance.

        source
      • Get started

        1 of 5 complete

        20%
        • Projects keep pages, settings and people together in one place.

        • Work goes faster together. Each teammate gets their own login.

        • Link a repository so commits and pull requests show up here.

        • Choose where you hear about mentions and reviews: email, desktop or both.

        • Add a logo and a name so the space feels like yours.

        Onboarding checklist

        A setup checklist that counts up as you go and celebrates the finish.

        source
      • ui labNo. 0042
        Studio memberYash
        Bavadiya
        Member sinceApril 2024
        Details

        Flip card

        Turns over in 3D to show what is on the back.

        source
      • Icon morph

        Icons reshape themselves between states instead of swapping.

        source
      • Five principles of motion

        Scroll to stack them up.

        01

        Respond on press

        Feedback starts the moment a finger lands, not when it lifts.

        02

        Stay interruptible

        Anything in motion can be grabbed mid flight and sent somewhere else.

        03

        Keep the velocity

        A release carries on at exactly the speed the hand gave it.

        04

        Leave the way you came

        What slides in from the right goes back out to the right.

        05

        Show restraint

        Motion people see a hundred times a day should barely be there.

        Sticky stack

        Cards pile up and sink back as you scroll.

        source
      • Launch checklist

        Pricing page, changelog, and the email to the waitlist.

        Open question

        Ship dark mode first, or keyboard shortcuts?

        Idea

        Let people pin their favourite components to the top.

        Done this week

        Spring presets and the new docs sidebar.

        You found it

        Press 0 to head home, or Fit to see everything.

        Drag or scroll to pan, pinch to zoom. Ctrl and scroll also zooms. Arrow keys pan, plus and minus zoom, 0 resets.

        Infinite canvas

        Pan, pinch and zoom around a board of notes.

        source
      • Documents

        16 items

        Projects12 items
        Invoices48 items
        Brief.pdf240 KB
        Roadmap.md8 KB
        Cover.png2.1 MB
        Budget.csv36 KB
        index.ts4 KB
        Intro.mp484 MB
        Theme.wav9.6 MB
        Backup.zip1.2 GB
        Sketch.png860 KB
        Notes.txt2 KB
        Metrics.csv120 KB
        server.go11 KB
        Demo.mov210 MB
        Assets96 items

        0 selected

        Arrow keys move, Space toggles, Shift with arrows extends the selection, Control or Command A selects all, Escape clears.

        Drag select

        Draw a box across files to select them, like the desktop.

        source
      • Drag to reorder, or press Space to pick up, arrow keys to move, Space to drop and Escape to cancel.

        Sortable grid

        Drag an app tile and the others slide out of its way.

        source
      • A decorative grid of short lines that turn to point at the pointer, like iron filings around a magnet, and drift in a slow wave when left alone.

        Magnet lines

        Lines turn toward your cursor like iron filings near a magnet.

        source
      • Morphing nav

        One dropdown panel reshapes and slides as you move between menu items.

        source
      • Recent

        Color picker

        Drag a color out of the square, then fine-tune hue and opacity.

        source
      • Demo only. Nothing is charged or sent anywhere.

        Card input

        Formats as you type, spots the card brand, and flips to show the CVC.

        source
      • Choose a plan

        Radio cards

        The selection ring glides to the plan you pick.

        source
      • Shift click to select a range

        Checkbox group

        Check marks draw themselves in, and Shift-click fills a range.

        source
        1. Cart
        2. Shipping, not started
        3. Payment, not started
        4. Done, not started

        Progress stepper

        Fills the line toward the next step and unfills it in reverse.

        source
      • Promise toast

        One toast that morphs from saving to saved, or to an error with retry.

        source
      • q3-report.pdf

        2.4 MB, edited 3h ago

        Confirm popover

        Asks before deleting, from a popover that grows out of the button.

        source
      • Activity

        1. Mira commented on #482

          2m ago

          Looks good, one nit on the spacing.

        2. Yash pushed to main

          18m ago

          fix: debounce the search input

        3. Deploys shipped v2.4.1

          1h ago

          Production, build finished in 48s

        4. Yash replied on #479

          3h ago

          Pinned it to the top, try again?

        5. Arjun pushed to feat/timeline

          1d ago

          feat: relative times that update

        Activity timeline

        New events slide in at the top as the line grows to meet them.

        source
      • Drag the edge to resize. Folded folders live behind the dots.

        Breadcrumbs

        Folds the middle of a deep path into a menu when space runs out.

        source
      • 3 projects are live. Build times are down 12% since last week.

        Overflow tabs

        Scrolls a long row of tabs, fading whichever edge still hides more.

        source
      • Home

        Three things on today.

        • Standup notes9:30, with the design team
        • Review tab bar11:00, two comments open
        • Ship the releaseBefore 5, tagged v2.4

        Tab bar

        A phone tab bar whose pill slides over and fills in the icon it lands on.

        source
      • Good interfaces are made of details nobody notices. The press that gives a little under your finger, the menu that grows out of the button you clicked, the toolbar that appears right where your attention already is.

        Select any part of this note to format it. Try a word on the first line too: with no room above, the toolbar flips below the text.

        Selection toolbar

        A formatting toolbar that grows out of whatever text you select.

        source
      • 01

        ResponseFeedback lands on press.

        Response, card 01 of 08

        Carousel 3d

        Spin a ring of cards and flick it to land on the one you were aiming for.

        source
      • Ada Sørensen2 min read

        Springs are behaviour, not a timeline.

        A target that moves mid-flight bends the path instead of restarting it.

        Under the lens, the card shows its specs: 16px radius, 20px padding, a 36px avatar, 18px semibold title and 14px body. Arrow keys move the lens, Enter makes it larger.

        Lens reveal

        A lens follows your cursor and shows the specs hidden under a card.

        source
      • Elastic string

        Pull a string and let go to watch it ring back to rest.

        source
      • 40px
        56px

        Demo state only. The lab's own theme stays as it is.

        Theme toggle

        A sun that folds its rays away and turns into a crescent moon.

        source
      • Essay

        Notes on interruptible motion

        Why a transition that can change its mind halfway feels faster than one that always runs to the end.

        6 min read

        Bookmark button

        Fills from the bottom up and lands with a small squash.

        source
      • Send button

        The plane takes off along a curve, and a check lands in its place.

        source
      • brand-assets.zip

        24.8 MB

        Download button

        The arrow drops into the tray while the button fills with progress.

        source
      • 3,853 contributions in the last year by @xevrion

        Contribution heatmap

        A year of activity at a glance, sweeping in week by week.

        source
      • Visits by source

        Last 30 days

        Visits by source, last 30 days
        CategoryValueShare
        Organic search4,82042%
        Direct3,14027%
        Referral1,76015%
        Social1,19010%
        Other6406%

        Donut chart

        Draws itself in, then lifts whichever slice you point at.

        source
      • Overview

        Compared with the previous day

        Revenue
        $48,210, +4.1%
        Users
        12,480, +2.1%
        Conversion
        3.42%, +2.2%
        Latency
        184 ms, -4.5%

        Stat counter

        Numbers count up to their value; scrub a sparkline and the figure rolls back through its history.

        source
      • Weekly league

        Round 1

        1. 1st, Amara Okafor, 2,480 points
        2. 2nd, Jonas Weber, 2,310 points
        3. 3rd, Mei Tanaka, 2,265 points
        4. 4th, Rafael Costa, 2,140 points
        5. 5th, Sara Lindqvist, 2,055 points
        6. 6th, Gus Holm, 1,990 points
        7. 7th, Ivy Nakamura, 1,920 points
        8. 8th, Jon Reyes, 1,875 points

        Leaderboard

        Players glide past each other to their new ranks.

        source
      • Phone number
        Dial a number
        Type digits to dial them. Backspace deletes.

        Rotary dial

        Drag a hole to the finger stop and each digit lands as the disc unwinds.

        source
      • Shelf depth28.0cm
        Locked

        Pull the tab to measure. Release the lock to reel it back in.

        Tape measure

        Pull the blade out to measure; release the lock and it reels itself back in.

        source
      • Pull the chain

        Pull cord switch

        Pull the ball chain to switch the site's lights; light pours from the bulb as a cone.

        source
      • Right
        Left
        Right

        Try 12, 30, 7. Arrows turn, Enter sets a number.

        Combination lock

        Spin right, left, right to fill each number, then turn the handle to open.

        source
      • EXP-2041

        Design offsite, Goa

        Priya Shah, Product design

        Pending
        Flights, BOM to GOI
        $486.00
        Hotel, 2 nights
        $412.00
        Team dinner
        $96.40
        Total$994.40

        Rubber stamp

        Stamps a document approved or rejected, with ink that looks pressed in.

        source
      • Due Fri

        Call the landlord

        Ask about the radiator before it gets cold.

        5 reminders left

        Sticky note peel

        Peel the top reminder off by its corner to mark it done.

        source
      • Paper loaded

        Receipt printer

        Feeds a receipt out of the slot line by line; twist it against the cutter to tear it off.

        source
      • Arrow keys change the day, Home returns to today. Drag the page up for the next day, down for the previous one.

        Wednesday, 23 September 2026

        Today

        Tear off calendar

        Tear a day off to move forward, pull one back to go back.

        source
      • Take the new offer?

        Leaning yes: pros outweigh cons by 2

        Pros6

        • Higher salary
        • Sharper team
        • New stack to learn

        Cons4

        • Longer commute
        • Less vacation

        Balance scale

        Weighs your pros against your cons on a balance that tips and slowly settles.

        source
      • Laps

        Tap the sheet or use the arrow keys

        Tally counter

        Counts in hand-drawn tally marks, one pen stroke at a time.

        source
      • 122 of 160 characters remaining

        Ink well

        Drains a glass inkwell as you spend your character limit.

        source
      • At rest0 words per minute

        Typing seismograph

        Records the rhythm of your typing on a scrolling seismograph.

        source
      • Send feedback

        Tell us what to fix. We read every note.

        Ctrl + Enter to send

        On its way

        Thanks for the note. We read every one.

        Envelope send

        Folds your note into an envelope, seals it and sends it off.

        source
      • Documents

        4 files
        • Q3 report.pdf

          PDF, 2.4 MB

        • Invoice 0142.pdf

          PDF, 184 KB

        • Contract draft.docx

          Word, 96 KB

        • Tax return 2025.pdf

          PDF, 1.1 MB

        Press Delete to shred the focused file, or drag it into the shredder.

        Shredded

        Paper shredder

        Drag a file into the shredder and it comes out in strips.

        source
      • Leave a tip

        Tap a coin, or throw one in.

        6 coins
        Tip total $12.00
        $2
        $1
        $5
        $1
        $2
        $1

        Tip jar

        Coins drop into a glass jar and pile up as the total counts.

        source
      • Voucher20% off
        LAB-7Q2X
        Drag the pull down

        Zipper reveal

        Unzip the pouch to reveal the code inside.

        source
      • 0:48 / 3:34

        Drag the reels to scrub

        Cassette scrubber

        Scrub audio by dragging the tape, with reels that spin like the real thing.

        source
      • 0 / 24 popped

        Bubble wrap

        Pop every bubble to clear the list, one click or one long swipe.

        source
      • 2:15 PM

        Drag the sun, 6 AM to 8 PM

        Sundial picker

        Pick a time by dragging the sun across the sky.

        source
      • Road mapNo. 03

        Porto to Lisbon

        3 days, 412 km

        Day 1

        Porto to Costa Nova

        • 09:00Ribeira
        • 13:30Aveiro
        • 18:00Costa Nova

        Day 2

        Coimbra and the coast

        • 10:00Coimbra
        • 15:00Nazaré
        • 19:30Óbidos

        Day 3

        Sintra to Lisbon

        • 09:30Sintra
        • 14:00Cascais
        • 18:30Lisbon

        Folded map

        An itinerary that unfolds panel by panel like a paper road map, recentring as it opens.

        source
      • Engineering · 6 min read

        How we cut cold starts from 2.1s to 380ms

        Why cold starts matter

        Our checkout function woke up in 2.1 seconds on a cold start. On a warm path it answered in 40ms, so every idle stretch of five minutes was quietly costing us the first customer back.

        The fix was not one change but four, and the order we made them in mattered more than any single one.

        Measuring the right thing

        We started with averages and learned nothing. The p50 cold start looked fine because most requests were warm. What we needed was the p99 of requests that followed ten minutes of silence.

        A tiny scheduled probe did the job: it waited, fired one request, recorded the timing, and went back to sleep. Two weeks of that gave us a curve worth arguing about.

        The curve had two humps. One was module loading, the other was the database handshake, and they were almost exactly the same size.

        That second hump surprised everyone, because the connection pool was supposed to hide it.

        Shrinking the bundle

        The function shipped 14 MB of JavaScript, most of it an SDK we called twice. Replacing it with two fetch calls took an afternoon and removed 11 MB.

        Tree shaking did the rest once we stopped importing from barrel files.

        The connection pool lie

        A pool only helps if something is in it. After an idle period the platform froze the process, the sockets went stale, and the first query paid for a full TLS handshake plus a retry.

        We moved to an HTTP based driver that needs no socket at all. The handshake hump disappeared from the curve overnight.

        It cost us transactions across multiple statements, which we replaced with a single stored procedure for the one place that needed them.

        Where we landed

        Cold starts now sit at 380ms at the p99. Nobody notices them any more, which is the whole point.

        What we would do next

        Keep the probe. It has already caught one regression, a logging library that grew by 3 MB in a minor release.

        And measure before you tune. Every one of our first guesses was wrong.

        Scroll spine

        Maps the article as a spine of bands, each as long as its section, filling in as you read.

        source
      • Inês Duarte

        Product designer, Lisbon

        Replies within 4 hours

        MeYou
        12am6am12pm6pm

         

        Calm software for busy teams.

        Previously design lead at a payments startup. Now taking on two projects a quarter: design systems, onboarding, and anything with a dashboard.

        Status
        View as

        Availability badge

        Shows when the owner is working, and when that overlaps with your day.

        source
      • xevrion.dev/writing

        Writing

        Notes on building things, mostly late at night.

        • Building a physics engine for a car simulator

          Aug 2026 · 12 min

        • What I learned shipping 91 components in a day

          Sep 2026 · 6 min

        • Reverse engineering my keyboard's config protocol

          Jun 2026 · 9 min

        • Fedora, niri and an Nvidia card: a field guide

          Jul 2026 · 8 min

        Thanks for reading this far. If something here was useful, the best thanks is telling me what you built with it.

        Footer signature

        Signs the footer by hand when it scrolls into view, slowing through every loop.

        source
      • What's new

        Version 2.4.0

        v2.4.0

        Offline drafts

        • NewDrafts save locally and sync on reconnect
        • NewConflict view for edits from two devices
        • ImprovedLarge documents open 40% faster
        • FixedPasted tables keep their column widths

        Version 2.4.0, Sep 18, 2026: Offline drafts. New: Drafts save locally and sync on reconnect. New: Conflict view for edits from two devices. Improved: Large documents open 40% faster. Fixed: Pasted tables keep their column widths

        Changelog stack

        Files each release card behind the stack like a hand riffling index cards.

        source
      • Your team

        6seats

        PlanStarter

        Team pricing kicks in at 10 seats.

        6 × $12.00 list price
        $72.00
        Volume rate from 10 seats
        $0.00
        Pay yearly to save 20%
        $0.00
        Total

        Billed monthly

        $72.00/mo

        Pricing calculator

        Itemizes your bill like an invoice and upgrades the plan the moment your team crosses a seat threshold.

        source
      • Ledgerly for finance teams

        Everything you check before the first meeting

        Scroll through the four things teams open Ledgerly for. The screenshot follows along.

        Start a 14 day trial

        No card needed. Import last year's books in minutes.

        Feature spotlight

        A camera zooms into the part of the product screenshot each feature describes as you scroll past it.

        source
      • We moved our month-end close into Ledgerly in March. What used to eat the first week of every month now takes an afternoon, and nobody on the team misses the spreadsheets.

        We moved our month-end close into Ledgerly in March. What used to eat the first week of every month now takes an afternoon, and nobody on the team misses the spreadsheets. Ava Chen, Controller, Northwind Traders

        Testimonial highlight

        Swipes a highlighter across the line that sold the customer, one line at a time.

        source
      • Parcel · Private beta

        Join the waitlist

        Parcel lets in 200 new people every Friday. Save your spot in line.

        Front of the line1,283 waiting

        One email when your invite is ready. Nothing else.

        Waitlist join

        Drops your face into a real queue and rolls out your place in line.

        source
      • Field Notes · 6 min read

        Cold brew at home, without the sludge

        Grind coarse, steep for eighteen hours in the fridge, and filter twice. The second pass through a paper filter is what takes it from muddy to clean, and it costs you five minutes.

        A ratio of one to eight makes a concentrate you can cut with water or milk. Stronger than that and the bitterness creeps back in.

        We bake a few cookies

        Only the ones you allow. Switch one on and its bite bakes back in. Leave it off and the bite stays.

        • Essential

          Sign-in, your cart and security. The site breaks without these.

          Always on

        3 of 3 optional cookie types turned off.

        Cookie consent

        Bakes a bite back into the cookie for every category you allow.

        source
      • Start your free trial

        14 days of everything. No card needed.

        Try another typo

        Email typo fix

        Catches gmial.com and fixes it by moving only the letters that were wrong.

        source
      • Order summary

        2 items
        • Linen overshirtSand, size M$68.00
        • Waxed canvas toteOlive$24.00

        Codes are not case sensitive.

        Subtotal
        $92.00
        Shipping
        $6.00
        Total
        $98.00

        Try WELCOME10, FREESHIP or SUMMER20

        Coupon code

        Stamps your promo code onto the order and strikes out the price it beat.

        source
      • function Profile({ id }) {
          const [user, setUser] = useState(null);
        
          useEffect(() => {
            fetch(`/api/users/${id}`)
              .then((res) => res.json())
              .then(setUser);
          }, [id]);
        
          return <Card user={user} />;
        }
        1/3

        Fetch the user in an effect

        Code morph

        Glides every surviving token to its new spot as a tutorial moves to the next step.

        source
      • Aurel Field 38

        Automatic, 38 mm steel case

        $495

        Image hotspots

        Draws a leader line to one label card that travels between a watch's features, never covering the product.

        source
      • Pricing in public, one year later

        Small Batch, Episode 42

        1/5

        Cold open

        0:00 / 42:18

        Paused

        Waveform player

        Inks in a podcast's waveform, with chapter markers and a ghost playhead.

        source
      • Heavyweight Tee, Bone

        $48

        Fits like

        Relaxed through the chest

        Chest
        111 cm
        Length
        73 cm
        Room
        15 cm

        You: 96 cm

        Size L

        Size L: Relaxed through the chest. Chest 111 cm, length 73 cm.

        Size picker

        Pulls a tee over a body outline so you see the fit before you pick the size.

        source
      • Order #48213

        Thursday, Sep 24

        Arriving indays

        Arriving in 3 days, Thursday, Sep 24

        Packed at our Leeds warehouse

        1. Ordered, Sep 21, 9:14 AM
        2. Packed, Sep 21, 4:40 PM
        3. Shipped, next
        4. Out for delivery, pending
        5. Delivered, pending

        Order tracker

        Drives a parcel across a street map to your door and stamps each stop as it arrives.

        source
      • Your bag

        1 item

        Hinoki Candle

        Hinoki and cedar, 220 g

        Qty 1

        $38.00

        Subtotal
        $38.00
        Gift wrap
        $0.00
        Total
        $38.00

        Gift wrap

        Folds kraft paper over the cart item, ties a ribbon and bow, and asks who it's for.

        source
      • Marlow & Pine

        212 Wythe Ave, Brooklyn

        Checking hours

        Monday: closed
        Tuesday: 7 AM to 2 PM and 5 PM to 11 PM
        Wednesday: 7 AM to 2 PM and 5 PM to 11 PM
        Thursday: 7 AM to 2 PM and 5 PM to 11 PM
        Friday: 7 AM to 2 PM and 5 PM to 2 AM
        Saturday: 8 AM to 3 PM and 5 PM to 2 AM
        Sunday: 8 AM to 3 PM

        Store hours

        Draws the week's hours on a 24-hour scale and can redraw them in your own time zone.

        source
      • Design that feels calm, fast, honest, alive

        Word rotator new

        Keeps the letters two words share and glides them into place as the rest trade out.

        source
      • Ana Ruiz opened this edited synced

        Relative time new

        Says "4 min ago" and changes only at the moment the words would change.

        source
      • Say hello at

        Copy email new

        Click the address and its letters flip, one by one, into "Copied to clipboard".

        source
      • I build interfaces at a small studio, write about motion on weekends, and keep a reading list of the good stuff.

        Directional underline new

        The underline comes in from the side your cursor entered and leaves toward the side it left.

        source
      • Most of my motion thinking comes from this essay, and the springs in this lab are tuned with Motion.

        Hover preview link new

        Hover a link to get a preview card that trails your cursor and leans as it moves.

        source
      • Good interfaces rarely ask for attention. They wait at the edge of the page until your hand arrives, then answer with the smallest possible gesture. A button settles when pressed. A sentence steps forward while you read it. Everything else politely steps back.

        Focus paragraph new

        Brings the sentence you're reading forward and lets the rest step back.

        source
      • Text progress new

        Fills the label itself with ink as the upload runs.

        source
      • Halfway through the book you learn the narrator is . The last chapter shows the lighthouse keeper , which quietly recolors everything before it.

        Spoiler text new

        Hides a spoiler under shimmering grain that blows away from your click.

        source
      • Hello, Ada

        Greeting new

        Greets by time of day, with a sun or moon that rises into place along an arc.

        source

        Text scramble

        Hover a word and a block cursor reads it in, one letter at a time.

        source
      • Good motion is felt before it is noticed. It tells you where something came from, what just changed, and what will happen when you let go. When every duration and curve is chosen on purpose, an interface stops feeling like a screen and starts feeling like a material.

        Scroll reveal

        Words light up one by one as you scroll through them.

        source
        • Motion
        • Springs
        • Easing
        • Layout
        • Gestures
        • Tokens
        • Focus
        • Blur
        • Stagger
        • Clip path
        • Velocity
        • Origin
        • Presence
        • Drag
        • Shadows
        • Radius

        Marquee

        Drifts endlessly past a reading lens, and brakes gently when you hover.

        source
      • Build interfaces that feel right, fast, alive, or effortless.

        Typewriter

        Types, pauses and rewrites the last word with a human rhythm.

        source
      • Move across the letters, or tap them.

        Wave text

        Letters rise in a wave that follows your cursor.

        source
      • LAB

        Particle text

        A word made of dots that part around your cursor and burst when clicked.

        source
      • Essay · 4 min read

        Put the notes where the reader is

        The first printed books kept their notes in the margin, right where the reader needed them. Footnotes only took over when typesetting got fussy about columns, and endnotes arrived when publishers decided notes were too expensive to set on the page at all.

        On the web we inherited the worst of both: a tiny number that jumps you to the bottom of the page and a back link you have to hunt for. Margins are free on a wide screen, so notes can live beside the sentence they belong to, the way Edward Tufte sets them in his books. Hover a number to peek, click to keep it open.

        None of this needs a new format. The notes are still written inline, where the author thought of them, and the page decides how to show them from the room it has.

        Sidenotes

        Slides footnotes into the margin beside their sentence, and folds them inline on narrow screens.

        source
      • Essay, 6 min read

        The case for slower software

        Every product review I sit in eventually arrives at the same verdict: make it faster. Faster to load, faster to finish, faster to forget. Speed is the one metric nobody argues with.

        But the tools I keep coming back to are not the fastest ones. They are the ones that give me a moment to notice what I am doing. A good interface does not rush you through a decision; it holds the door open just long enough for you to walk through on purpose.

        Try selecting any sentence in this essay, or tap the underlined one above. The pill that appears is the whole feature: no share sheet, no modal full of networks, just the words you chose and two ways to pass them on.

        Slowness, used carefully, is a form of respect. It tells the person on the other side that their attention is worth more than a completion rate, and that the software will wait for them instead of the other way around.

        None of this means adding delays. It means choosing where the pauses go, the way a good editor chooses where the paragraphs break.

        Quote share

        Lifts the words you select out of the paragraph and into a shareable quote card.

        source