Skip to content

Components

141 of 141 · 71 at 0 B

Every card is the component running. The byte figure is measured from a production build by the same test that gates the release; the support chip says which engines, and what the others get.

Zero JavaScript?

For this one, yes. The browser animates the height.

Keyboard?

Native: Tab, Enter, Space.

One at a time?

details name=, also native.

Native <details> items whose height animates open and closed, with an optional one-at-a-time rule the browser enforces.

newly · Chrome 131 · Firefox 143 · Safari 18.4click

Animated Beam

Backgrounds

Sends packets of light along curves between nodes.

every browseralways

Six line icons that morph into a second state: menu to close, plus to close, copy to check, play to pause, sun to moon, and a check that draws itself.

Chrome 52 · Firefox 97 · not Safariclick

Shows notifications arriving one at a time: the new one drops in at the top, the older ones are pushed down, and the oldest slides out.

newly · Chrome 125 · Firefox 129 · Safari 17.5alwaysload

a native select · options stagger in

A native select with an animated picker.

Chrome 138 · not Firefox · Safari 27click

A button whose arrow slides out on hover as a new one slides in.

every browserhover

Ambient gradient field: three soft colour fields drifting at three coprime speeds, a slow hue rotation so the colours themselves move, and a film-grain layer stepped at 12 fps.

every browseralways

A row of overlapping avatars with a count chip such as "+2 398".

every browserhover

A bar chart whose bars grow from the baseline one after another when it scrolls into view; hovering a bar shows its value.

every browserscroll

Border Beam

Backgrounds

A beam of light travels around the edge of a card.

newly · Chrome 120 · Firefox 128 · Safari 16.4always

A browser window around a screenshot or any content: the three lights, an address bar with a lock, optional tabs with one active.

every browseralways

Swells the letter under the cursor to the heaviest weight and lifts it; its neighbours follow at half and a quarter, and everything settles when the pointer leaves.

every browserhover

Cards stick to the top as you scroll and each one shrinks and dims as the next slides over it, as on Apple product pages.

Chrome 116 · not Firefox · Safari 26scroll

A scroll-snap strip with previous/next buttons and dot markers that the browser generates and keeps in sync.

Chrome 135 · not Firefox · not Safariclickpointer

a tick that draws · one indeterminate

A checkbox whose tick is drawn.

every browserclick

A ring of text turning slowly around an icon, a logo, or nothing.

every browseralways
npx astro add moonarc
pnpm astro add moonarc
bunx astro add moonarc

A code block with tabs (for example npm, pnpm, bun) and a copy button per panel.

every browserclick

A ⌘K command palette: a native modal dialog with an input and a ranked list of links.

newly · Chrome 135 · Firefox 144 · Safari 26.2click

one canvas · gone when the last piece lands

Confetti

Pointer

Fires a burst of paper confetti on load, on a click or on an ma:confetti event.

every browserloadclick
npx astro add moonarc
click · check · back

A button that copies text to the clipboard: the icon turns into a check, the label says "Copied", and both come back after the ambient duration.

every browserclick

Counts a number up from zero to its value when it scrolls into view, with thousands separators, decimals, prefix and suffix.

newly · Chrome 91 · Firefox 128 · Safari 17scroll

A flip clock counting down to a date: days, hours, minutes, seconds, each a card whose top half folds down over the hinge when the number changes.

every browserload

A preloader that counts from 0 to 100 and then lifts like a curtain, on a fixed layer that never blocks the page: pointer-events none from the first frame, aria-hidden, the page rendered and usable beneath.

newly · Chrome 85 · Firefox 128 · Safari 17.2load

Cursor

Pointer

A custom pointer that trails the real one: a dot, a ring that grows over links and buttons, or a label ("View") any element can ask for with data-cursor-label.

every browserpointer

A field of cells that light up under the cursor and fade where it has been, with a slow idle sweep when nothing is touched.

every browserpointeralways

page one

Iris.

page two

From the click.

Try the real swap →

Curtain

Page transitions

A full-viewport wipe between pages: the next page opens through an iris from where you clicked, or through blinds, a shutter, doors, pixels, staggered columns, a diagonal, or a title panel that carries the next page's name.

newly · Chrome 120 · Firefox 144 · Safari 18click

dialog

Native, animated, zero script.

Escape, backdrop click and focus are the browser's. The scale and the blur are @starting-style and allow-discrete.

A native modal that scales in over a blurred backdrop and scales out again, closes on Escape, the close button or a backdrop click, and traps focus, all handled by the browser.

newly · Chrome 135 · Firefox 144 · Safari 26.2click

A macOS-style dock: the tile under the pointer swells, its neighbours swell less, and the row pushes apart to make room.

every browserhover

Dot Pattern

Backgrounds

A field of dots behind content, faded toward the edges, with an optional slow pulse.

every browseralways

Dotted Map

Backgrounds

A world map drawn as a grid of dots, with markers that pulse.

every browseralways

drawer

Drag it down.

Follows the finger; on release, distance or velocity decides. Grab it mid-flight and it obeys.

A bottom sheet that slides up over a scrim and can be dragged closed: it follows the finger, and on release springs back or leaves depending on distance and velocity, interruptible mid-flight.

newly · Chrome 135 · Firefox 144 · Safari 26.2clickpointer

click · four declared sizes, one attribute

A black pill that changes shape with its state.

every browserclick
  • src
    • components
      • Hero.astro
      • Nav.astro
    • layouts
      • Base.astro
    • pages
      • index.astro
      • work.astro
  • astro.config.mjs
  • package.json

A project tree whose folders open with an animated height, a turning chevron and a folder glyph that tips open; rows can be lit up to say "this is the file you change".

newly · Chrome 131 · Firefox 143 · Safari 18.4click

Filter buttons over a grid of cards: the cards that stay slide to their new places, the ones that go fade out, the ones that return fade in.

newly · Chrome 137 · Firefox 144 · Safari 18.4click

The page content slides up to reveal a footer that is already in place underneath.

every browserscroll

Splits text into two coloured copies and jumps a few slices sideways for a fraction of a second, every few seconds; the rest of the time the text is clean.

every browseralways

Globe

Backgrounds

A turning globe of dots that you can drag.

every browseralwayspointer

A field of braille dots that reads as a flowing contour map: two waves cross it, the colour turns along a sunset arc, and the cursor carves a trail that decays one dot at a time.

newly · Chrome 125 · Firefox 128 · Safari 17.2pointeralways

A gradient fill drifting slowly through the text with no seam at the loop point.

every browseralways

Grid Pattern

Backgrounds

A hairline grid behind content, faded toward the edges, optionally drifting one cell at a time.

every browseralways

A highlighter sweeps across the phrases you marked, one after another, when the sentence scrolls into view.

every browserscroll

A strip of items slides sideways while the page scrolls down and the section stays pinned.

Chrome 115 · not Firefox · Safari 26scroll
The scene as a line drawingThe scene in colour

drag · click · ← →

Compares a before and an after image with a line you drag between them.

newly · Chrome 124 · Firefox 121 · Safari 16.5pointerclick

Small images pop up along the pointer's path and fade behind it.

every browserpointer
Study 1Study 2Study 3

click · grows from its thumbnail · ← →

A thumbnail gallery whose images open full size: the image grows out of its own thumbnail on a same-document view transition and returns to it on close, and ← → move through the set.

newly · Chrome 111 · Firefox 144 · Safari 18click

A link that shows a small card (image, title, one line, domain) after a moment on hover or focus, above everything, flipping when there is no room.

newly · Chrome 125 · Firefox 147 · Safari 26hover

A glass pane that blurs and tints whatever is behind it.

Chrome 76 · not Firefox · not Safarihover

Magnetic

Pointer

A button or icon is pulled toward the cursor while it is nearby and springs back when it leaves.

every browserpointerhover

Marquee

Ticker

Infinite scrolling strip for logos, quotes or tags in any direction.

every browseralwayshover

Meteors

Backgrounds

Streaks falling diagonally across a twinkling sky.

every browseralways

Noise

Backgrounds

Film grain over a gradient or image, blended and flickering at 12 fps.

every browseralways

1,284

A number whose digits roll to the new value when it changes.

newly · Chrome 125 · Firefox 118 · Safari 15.4click

Orb

Backgrounds

A sphere of light that breathes and slowly turns its colour.

newly · Chrome 85 · Firefox 128 · Safari 16.4always

Orbiting Circles

Backgrounds

The children orbit the centre of their parent and stay upright.

every browseralways

one input · paste and autofill work

A one-time code in cells, from one native input.

every browserclick

page one

Hero.

page two

Hero.

Try the real swap →

Page Transition

Page transitions

Animates a named region between pages: rise, zoom, wipe, scope, fade, slide, or the browser's own shared-element morph.

newly · Chrome 111 · Firefox 144 · Safari 18click

Parallax

Scroll

An element drifts at its own speed as it crosses the viewport, exactly in step with the scroll.

Chrome 115 · not Firefox · Safari 26scroll

Particles

Backgrounds

A field of drifting dots that part around the cursor, on a canvas that draws only while on screen in a visible tab.

every browseralwayspointer
Ambient loopthe same element rides into the next page

Press play, then navigate: position, volume and playback carry over.

Persist Player

Page transitions

An audio player that keeps playing while you navigate: the same <audio> element is carried into the next page by Astro's router, so position, volume and playback never restart.

every browserclick

A generic phone frame around a screenshot or any content, with three cut-outs (island, notch, punch), a home bar, and no logo, buttons or brand.

every browseralways

click · the pill slides on a view transition

A floating pill of links whose active pill glides to the page you chose.

newly · Chrome 125 · Firefox 147 · Safari 26clickhover

Raw bytes of JavaScript, from a production build, measured again for every change that can move them.

A popover that opens beside its trigger, flips when there is no room, closes on outside click or Escape, and animates in and out.

newly · Chrome 125 · Firefox 147 · Safari 26click

sample prices

Starter

$12/mo$115/yr

one site

Studio

$48/mo$460/yr

up to ten

A monthly / yearly toggle whose prices roll to the other amount instead of swapping.

newly · Chrome 125 · Firefox 129 · Safari 17.5click

Progress

Loading

A bar that fills to its value when it scrolls into view, with the number counting up beside it, or a ring with the number in the middle.

newly · Chrome 91 · Firefox 128 · Safari 17scroll

Progressive Blur

Backgrounds

An edge that blurs what scrolls under it, more the closer it gets: a few bands, each with a backdrop blur twice the last and a mask that keeps it to its own slice, so the blur ramps instead of stepping.

every browseralways

grows with the text · Enter sends · ⇧Enter breaks the line

The AI prompt box: a form with a textarea that grows with its content through field-sizing, a model select, an attachment button that is a real file input, and a send button that dims until something is typed and spins while the form carries data-pending.

newly · Chrome 123 · Firefox 152 · Safari 26.2click

A table of contents that lights up as you read.

every browserscroll

Retro Grid

Backgrounds

A perspective grid floor sliding toward the viewer.

every browseralways

Ripple

Backgrounds

Rings expand from a point and fade, one after another, like a pulse.

every browseralways

Cycles through a list of words in place.

newly · Chrome 85 · Firefox 128 · Safari 16.4always

An image that starts narrow and rounded and opens to the full width as it scrolls into view.

Chrome 115 · not Firefox · Safari 26scroll

A hairline along the top of the viewport that fills as the page is read.

Chrome 115 · not Firefox · Safari 26scroll

Entrance on scroll that plays once and stays, staggers its children, scrubs with the scroll position when asked, honours reduced motion, and keeps working after every ClientRouter navigation.

every browserscroll

Bind translate, scale, rotate and opacity to the scroll position: the element goes from the start values you give to neutral across a range of its own passage through the viewport, exactly in step.

Chrome 115 · not Firefox · Safari 26scroll

A highlight sweeps across the body of a button on a loop; hover lifts it on the preset's hover travel and adds a ring, and focus draws the same.

every browseralwayshover

A highlight sweeps across the text every few seconds.

every browseralways

Skeleton

Loading

Placeholder lines, optionally with an avatar, shimmering while content loads.

every browseralways

A small line chart that draws itself from left to right when it scrolls into view; the last point lands and pulses.

every browserscroll

Spinner

Loading

An indeterminate arc whose length breathes while it rotates, so it looks like it is working rather than spinning a fixed wedge.

every browseralways

A departures board: every character spins through the alphabet and locks, one cell after another, when the board scrolls into view.

newly · Chrome 91 · Firefox 128 · Safari 17.2scroll

Splits a string into words, characters or lines on the server and reveals them with a capped stagger when they scroll into view.

every browserscroll

Spotlight

Pointer

A soft radial light follows the cursor over a card and fades in only while hovered.

every browserpointerhover
studio

hello@studio.example · Jakarta · 2026

Open the menu.

full · top · right: items in, reversed out

A burger that opens a full-screen menu (or a top sheet, or a side panel) whose items arrive one after another and leave in reverse.

newly · Chrome 135 · Firefox 144 · Safari 26.2click

idle → pending → done · one attribute

One submit button with four faces (idle, pending with a spinner, done with a check that draws itself, error) and a width that follows the label.

every browserclick

2026-09-28: fix: what the audit of every product found.

What shipped
sitescroll · close

The ribbon stays. The page moves.

Dismiss it and the content below slides up on the preset curve as a grid row folds.

An announcement ribbon that sticks to the top of the page and folds away when dismissed, the content below sliding up on the preset curve.

newly · Chrome 117 · Firefox 129 · Safari 17.4loadclick

Steps on the left scroll by; one visual on the right stays put and changes with them.

Chrome 116 · not Firefox · Safari 26scroll

A headline's outline draws itself glyph by glyph when it scrolls into view, then the fill comes in.

every browserscroll

a checkbox underneath · Space flips it

A toggle that springs.

every browserclick
npx astro add moonarc
pnpm astro add moonarc
npx shadcn@latest add …/r/tabs.json

Tabs with an indicator that slides to the selected one and panels that fade in.

every browserclick

A label rolls upward into a copy of itself on hover, letter by letter from the left, and rolls back when the pointer leaves.

every browserhover

Random characters resolve into the real text from left to right when it scrolls into view, on load, or on hover.

every browserscrollhoverload

click · the page changes from the button
ThemeScript · 473 B raw, inline in <head>

Cycles system → light → dark, and the page changes theme through a circle that grows from the click, on a same-document view transition.

newly · Chrome 111 · Firefox 144 · Safari 18click

Tilt

Pointer

A card leans toward the cursor in 3D, lifts slightly, catches a glare, and settles back on the active preset's spring when the cursor leaves.

every browserpointerhover

Notifications that slide in, stack behind each other, push up as new ones arrive, and expand into a list on hover.

newly · Chrome 117 · Firefox 129 · Safari 17.5clickhover

A line beside an article fills as it is read, with a dot at its head.

Chrome 115 · not Firefox · Safari 26scroll

Types a string one character at a time in any font, with a caret that stays solid while typing and blinks once idle.

Chrome 116 · not Firefox · Safari 18load

A link underline that enters from the left on hover and leaves to the right, so the exit continues the entrance instead of rewinding it.

every browserhover

hints take turns · Enter sends · the words blur away

Placeholders that take turns, and text that blurs away on submit.

newly · Chrome 125 · Firefox 128 · Safari 16.4clickalways

click · morphs open

A poster with a breathing play button that opens the video in a dialog: a file with native controls, or an embed.

newly · Chrome 135 · Firefox 144 · Safari 26.2click

A wave of boldness rolls through the letters of a line, each character animating its font weight on its own delay.

every browseralways

404

Pro

A 404 page: the code scrambles into place from random digits, rings spread slowly behind it, and the headline, copy and one link home arrive in three beats..

every browserload
Release

The logo

The site wears its logo kit: the mark in the header and the footer, and the same drawing on the share cards, the favicons and the home screen icon.

Shows blog posts as cards, with the first post featured across two columns.

newly · Chrome 111 · Firefox 144 · Safari 18scrollhoverclick

A closing call to action: a deep brand panel with an aurora and film grain behind it, a headline that catches a shine, a magnetic primary action, a secondary one, and a typed command.

every browserscrollpointer

Lists dated releases in a hairline list.

every browserscroll

Compares your product with others in an "us versus them" table.

newly · Chrome 85 · Firefox 128 · Safari 16.4scroll

Draws slow noise waves on the GPU, ordered-dithered into pixel cells of one colour on the page's ground, for the look of a 1-bit screen.

every browseralwayspointer

A documentation layout: a sticky sidebar with the current page marked, a reading-progress hairline bound to the scroll, the header and content revealed in two beats, and previous/next links.

Chrome 115 · not Firefox · Safari 26scroll

A split hero: a tall headline revealed line by line on the left, a live panel sliding in from the right, on a slowly drifting grid.

every browserloadpointer

Questions people actually ask

Short answers. The long ones are in the docs.

Is it really zero JS?

For 67 of 102, yes, measured from a build.

Does it survive View Transitions?

Yes, verified on Astro 5, 6 and 7.

Do I need Tailwind?

No.

FAQ

Pro

A heading and lead beside a native accordion: one question open at a time, heights animated by the browser, keyboard and screen reader handled by <details>.

newly · Chrome 131 · Firefox 143 · Safari 18.4scrollclick

Lays out features as a bento grid: one slab split by 1 px hairlines, with the page ground showing through the gaps.

every browserscroll

Shows features in alternating rows of copy and a visual.

Chrome 115 · not Firefox · Safari 26scroll

A hero with a field of glyphs behind a panel in the brand colour (ink on a page without a theme) whose meta line, headline and actions wipe in one after another.

newly · Chrome 125 · Firefox 128 · Safari 17loadpointer

Moves thousands of particles along an invisible current, leaving fading trails.

every browseralwayspointer

Draws smoke that follows the cursor.

every browserpointeralways

A site footer: brand and blurb, link columns revealed with a stagger, a legal row, and a dot field fading up from the bottom edge.

every browserscroll

Draws a cluster of liquid drops that merge and pull apart: metaballs on the GPU with a compact kernel, cut with an edge exactly one pixel soft.

every browseralwayspointer

A complete hero as one component with props: an ambient aurora, a headline split and revealed word by word, supporting copy with a rotating word, two actions and a typed command.

every browserload

Hyperspeed.

hold to jump

Draws a jump to light speed: streaks of light rush out of a vanishing point, longer and brighter toward the edge, in one colour with a hot head in a second tone.

every browseralwayspointerclick

Covers content with a layer that the cursor washes away like ink in water, showing what is underneath.

every browserpointer

A grid of integrations, tools or partners: cards with an icon, a name and a line, each lit by a spotlight that follows the cursor and lifting on hover, revealed with a tight stagger..

every browserscrollpointer

Draws a pool of liquid metal.

every browseralwayspointer

Makes an image turn liquid under the cursor and settle back.

every browserpointer

A "trusted by" section: a heading, a strip of greyscale logos drifting past that colour up on hover, and optionally the same logos as a hairline grid revealed with a stagger.

every browseralwaysscroll

An email signup section built on a real form: native validation, an invalid state that only shows after the user has typed, a submit button whose label swaps for a spinner when the form carries data-pending, a status line for your handler, and a dot field behind.

every browserscroll

Draws glowing ribbons of light drifting through each other: four sine fields interfere on the GPU, the sum folds into soft bands, and each band glows in a colour sliding between two tones with a hot core at its peak.

every browseralwayspointer

Free

$0/yr

MIT, forever

  • 102 primitives, no account, no token
  • Runtime, GSAP and Lenis adapters
  • Public shadcn registry
  • MCP server
Set up in five minutes

Pro

$129/yr

One person, billed yearly

  • 28 sections and 11 GPU effects, demos never gated
  • Every template, starting with Waitlist
  • audit_motion and measure_budget, locally and in CI
  • compose_section with a total cost
  • New components monthly, dated changelog
  • Email support within 2 working days
Not open yet: see the plan

Team

$349/yr

Up to 10 people, one invoice

  • Everything in Pro, for the whole team
  • One key for the team, locally and in CI
  • Move up from Pro at any time
  • More than 10 people: email us
Talk to us

Shows pricing plans side by side, with an annual/monthly toggle that swaps every price with zero JavaScript (radios and :has), the highlighted plan wearing a travelling border beam, cards revealed with a stagger.

newly · Chrome 105 · Firefox 128 · Safari 16.4scrollclick

A feature-by-plan comparison: the highlighted plan's column lit, rows revealed with a 40 ms stagger as the table scrolls into view, and a header row that sticks when you cap the table's height.

every browserscroll

Silk

Pro

Draws a sheet of fabric drifting in slow folds, lit from one side: a warped height field on the GPU, normals from finite differences, a diffuse body in the colour and a narrow sheen in a second tone.

every browseralwayspointer

Shows big numbers that count up when scrolled into view, 120 ms apart, with labels and an optional bar under each, in a hairline row.

newly · Chrome 91 · Firefox 128 · Safari 17scroll

A vertical timeline: the line draws itself down the page in step with the scroll, each step revealing from the line's side as it is reached, markers numbered or dated.

Chrome 115 · not Firefox · Safari 26scroll

A sticky navigation bar that condenses over the first 120 px of scroll: the row tightens and a hairline appears, bound to the document's scroll timeline.

Chrome 115 · not Firefox · Safari 26scroll

Shows team members in a hairline grid: portraits that tilt toward the cursor with a glare, initials when there is no photo, names and roles revealed with a stagger..

every browserscrollpointer

A hero for developer tools: split headline on the left, a terminal window on the right that types the install command and prints its output line by line, on a pulsing dot field.

Chrome 116 · not Firefox · Safari 18load

Shows testimonial quotes in a staggered grid.

every browserscrollpointer

Shows two rows of testimonial cards drifting in opposite directions, pausing while hovered so any quote can be read.

every browseralwayshover

You're in

Thanks, you're on the list.

We'll write once, the day it opens. Until then, every friend who joins through your link moves you up.

Your place in line
1,284
Your referral link

Back to Pro

A thanks page for after a signup: a headline, the reader's place in line rolling up, a referral link with a copy button, and one burst of confetti.

newly · Chrome 125 · Firefox 121 · Safari 15.4loadclick

Waitlist · private beta

Doors open soon.

One email when they do. Type it in and watch it go. The form underneath is real.

Opens

Demo: nothing is sent.

A pre-launch hero with a waitlist form: a flip countdown over a retro grid floor, an email field whose text blurs away on submit, a status line that says what happened, and the people already waiting.

newly · Chrome 125 · Firefox 128 · Safari 16.4loadclick

Draws a water surface in halftone.

every browserpointeralways