Skip to content

Components / Sections

Animated page sections

108 components · 32 at 0 B

Animated page sections for Astro, built from the free primitives: heroes, features, pricing, testimonials, FAQ, blog and footers. Pro.

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

The people a buyer deals with: each drawn by PortraitArt on a colour block, with the name, the role, the areas and languages, a figure or two, a line in their own words, and a call and an email as links.

every browserscroll

Sample run

One task, from the failing test to the merge

An imaginary agent on an imaginary repository. The lanes fill in order; under reduced motion, or without JavaScript, they are filled from the start.

Task Fix the failing checkout test in apps/web

Done

  1. Plan

    • Read the failing job
    • Reproduce it locally
    • Round the total to cents
    • Run the suite again
  2. Tools

    • read_log(job 4182)done0.4 s
    • grep("toBe(19.99)" apps/web)done0.2 s
    • run_tests(apps/web)done38 s
  3. Changes

    apps/web/src/cart/total.ts
    export function total(items: Item[]) { const sum = items.reduce(add, 0); return sum * 1.2; const gross = sum * 1.2; return Math.round(gross * 100) / 100;}
  4. Review

    Maya Kim

    Ready to merge. The suite passes and the change is two lines.

    Approved

Checkout totals round to cents

Files
1 changed
Tests
48 passed
Time
2 min 41 s
Tokens
18.2k

An AI agent's run, replayed in the page: the task at the top, then four lanes that fill in order (the plan ticks off, tool calls spin and finish with their time, a diff writes in line by line, a person is asked to approve and the approve reads Approved), then the result with its numbers.

every browserscrollhoverclick

API reference

Every request takes your key as a bearer token. Sample API, made up for this demo.

Base URLhttps://api.sitename.example/v1

Language

Emails

Send an email, then follow it until it lands.

Send an email

POST/emails

Queues one email. It is sent within seconds; follow it with GET /emails/{id} or a webhook.

Body

  • fromstringFormat: email.required

    An address on a domain you have verified.

  • tostringFormat: email.required

  • subjectstringAt most 998 characters.required

  • textstringoptional

    The plain-text body.

  • tagsarray of objectsoptional

    Labels you can filter the logs by.

    Fields 2
    • namestringoptional

    • valuestringoptional

Responses

202
Queued.
422
A field is missing or the domain is not verified.

Request

curl -X POST "https://api.sitename.example/v1/emails" \
  -H "Authorization: Bearer $SITENAME_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "hello@sitename.example",
    "to": "ada@example.com",
    "subject": "Your receipt",
    "text": "string",
    "tags": [
      {
        "name": "kind",
        "value": "receipt"
      }
    ]
  }'
const res = await fetch('https://api.sitename.example/v1/emails', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SITENAME_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    from: 'hello@sitename.example',
    to: 'ada@example.com',
    subject: 'Your receipt',
    text: 'string',
    tags: [
      {
        name: 'kind',
        value: 'receipt',
      },
    ],
  }),
});
const data = await res.json();
import os
import requests

res = requests.post(
    "https://api.sitename.example/v1/emails",
    headers={"Authorization": f"Bearer {os.environ['SITENAME_KEY']}"},
    json={
        "from": "hello@sitename.example",
        "to": "ada@example.com",
        "subject": "Your receipt",
        "text": "string",
        "tags": [
            {
                "name": "kind",
                "value": "receipt",
            },
        ],
    },
)
print(res.json())
{
  "id": "em_7Hq2kD9x",
  "status": "queued",
  "created_at": "2026-10-09T08:14:22Z"
}
{
  "error": "domain_not_verified",
  "message": "Verify sitename.example before sending from it."
}

Get an email

GET/emails/{id}

Path parameters

  • idstringrequired

    The id the send returned.

Responses

200
The email and where it is.

Request

curl "https://api.sitename.example/v1/emails/em_7Hq2kD9x" \
  -H "Authorization: Bearer $SITENAME_KEY"
const res = await fetch('https://api.sitename.example/v1/emails/em_7Hq2kD9x', {
  headers: {
    Authorization: `Bearer ${process.env.SITENAME_KEY}`,
  },
});
const data = await res.json();
import os
import requests

res = requests.get(
    "https://api.sitename.example/v1/emails/em_7Hq2kD9x",
    headers={"Authorization": f"Bearer {os.environ['SITENAME_KEY']}"},
)
print(res.json())
{
  "id": "em_7Hq2kD9x",
  "status": "queued",
  "created_at": "2026-01-01T00:00:00Z"
}

Domains

The domains you send from, and whether their records check out.

List domains

GET/domains

Query parameters

  • limitinteger1 to 100.optional

    How many to return.

    Default20

Responses

200
The domains, newest first.

Request

curl "https://api.sitename.example/v1/domains" \
  -H "Authorization: Bearer $SITENAME_KEY"
const res = await fetch('https://api.sitename.example/v1/domains', {
  headers: {
    Authorization: `Bearer ${process.env.SITENAME_KEY}`,
  },
});
const data = await res.json();
import os
import requests

res = requests.get(
    "https://api.sitename.example/v1/domains",
    headers={"Authorization": f"Bearer {os.environ['SITENAME_KEY']}"},
)
print(res.json())
{
  "data": [
    {
      "name": "sitename.example",
      "status": "verified"
    }
  ],
  "has_more": false
}

An API reference in one section: a sidebar of groups and their operations; for each operation its method and path, what it does, its path, query and header parameters, the fields of its body (nested fields under a disclosure, as deep as they go) and its responses; and beside it, sticky on a wide screen, the request in every language with a copy button and the response examples by status.

newly · Chrome 131 · Firefox 143 · Safari 18.4click

A hero for a mobile app: the headline, the rating line (stars, the average, how many rated and where) and the store buttons beside a phone on a disc of the app's colour.

every browserload

The neighbourhoods an agency sells in, as ExpandingPanels: each area a panel with its street drawn by HomeArt, its starting price over its name and a line about it, widening as it is pointed at or focused; under the row the same areas with a few figures each, so the figures are read in order.

every browserpointerhover

What is on offer, as colour blocks: each card paints one of the palette's blocks and carries a drawing in its corner (Motif), an index, a name, a line, chips for what it includes and a foot with a price and a round arrow.

newly · Chrome 105 · Firefox 121 · Safari 15.4hover

The closing call on a colour block: a short line, a large heading that ends on a phrase in the emphasis face, a sentence and two pill actions, on one of the palette's blocks with a drawing (Motif) rising out of its lower corner.

every browserscrollhover
All posts

Sample post: a page built for reading

This post is sample text. It describes the page it sits on, so every sentence can be checked against what the page does.

What follows you as you read

Two things on this page follow the reader: the line beside the text and the list of headings in the side column.

The beam

The line fills as the article scrolls past. It runs on the article's own view timeline, so the browser draws it and no script counts pixels.

The contents list

The list marks the heading you are reading. Its links are plain anchors, and a jump stops below the sticky bar.

Components a post brings

A post imports what it uses: a marker, code tabs, a gallery and a link card.

npx astro add moonarc
pnpm astro add moonarc
Sample picture 1, a gradient studySample picture 2, a gradient studySample picture 3, a gradient study

The list beside this text is Reading TocReading TocA table of contents that marks the heading you are reading., and the line is its sibling.

Without JavaScript

The line is full and still, the list is a list of links, the pictures link to their full size, and the card is a plain link.

The page of one blog post: a header with the date, the reading time, the title, the author, the tags and the cover, then the body in a measured column that a beam fills as it is read, beside a contents list that follows the reader.

Chrome 115 · not Firefox · Safari 26scrollclick
Release

Endpoint, Homescreen, Estate, Practice and Stay, templates for developer products, mobile apps, estate agents, practices and places to stay, and thirty sections

Endpoint, a template for a product with an HTTP API: a console on the home page that sends a request and streams the response back with its status, its time and its region, an API reference written at build from your OpenAPI document, a quickstart and four guides, usage pricing with a slider, a status page, the regions on a map, a changelog with a feed, search and a contact page for sales.

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

newly · Chrome 111 · Firefox 144 · Safari 18scrollhoverclick

Writing as a list: the day, the title at display size and the reading time on one line per post, the whole line a link, and the post's cover floating by the pointer while the line is hovered.

every browserhoverpointer

A demo: the search opens a page that is not there.

The dates and the guests of a stay, handed to the place's own booking engine: a form that sends them to the engine's address as the parameters it reads (check-in, check-out, adults, children, and any fixed ones, such as the property's id), so a guest lands on the engine's page with the search filled in.

every browserclick

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

Case studies as a deck: on a wide screen each card holds at the top of the screen while the next slides up over it, and the one underneath shrinks and darkens a little on a scroll-driven timeline; on a phone they follow one another.

Chrome 115 · not Firefox · Safari 26scrollhover

01 / 04 · Sample case study

Harbour Lines

A mark, a typeface and a sign system for an imaginary ferry line, read from a moving deck.

Client
A sample ferry line
Year
2026
Role
Identity, wayfinding, motion
Credits
Sample names
A sample cover: a blue field with a pale circle

The top of a case study: the project's title at display size, its facts in a grid (client, year, role, credits), the cover that opens from a rounded inset to the full width as the page scrolls (ScrollExpand), then a before-and-after (ImageCompare) or a gallery that opens full size (Lightbox).

Chrome 115 · not Firefox · Safari 26scrollclick

Lists dated releases in a hairline list.

every browserscroll

Sample conversation

Ask, watch it work, approve

An imaginary agent on an imaginary repository. Open a call to read what it returned.

Sample agent

Done

  1. You

    Fix the failing checkout test in apps/web

  2. Sample agent

    One assertion fails: the total keeps a fraction of a cent. I will find where it is computed.

    • read_log(job 4182)0.4 s
      FAIL apps/web/cart.test.ts
        total > rounds to cents
        expected 23.99, received 23.988
    • grep("* 1.2" apps/web/src)0.2 s
      apps/web/src/cart/total.ts:3  return sum * 1.2;
    • run_tests(apps/web)38 s
      Tests  48 passed (48)
      Time   37.9 s
  3. Sample agent

    Push the change to fix/checkout-rounding and open a pull request?

    Approved

  4. Sample agent

    Done. The total now rounds to cents after tax, and all 48 tests in apps/web pass. The pull request is open for review.

A conversation with an AI agent, replayed in the page: the reader's message, the agent's reply with its tool calls folded into <details> (the call and its result in the monospace face), a request for approval that is approved, and the final answer, typed, with a button that copies it; a prompt box at the foot as a demo form.

Chrome 116 · not Firefox · Safari 18scrollhoverclick

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

newly · Chrome 85 · Firefox 128 · Safari 16.4scroll

Contact · sample page

Write to the team.

Sample channels on the left. The form on the right is real and sends nothing here: fill it in and watch the button.

Email (sample)
hello@studio.example
Phone (sample)
+1 555 0100
Office (sample)
1 Sample Street, Springfield

Demo: nothing is sent.

A contact section in two columns: the ways to reach you (email, phone, office) on one side, a form that really sends on the other.

Chrome 135 · not Firefox · Safari 27click

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

How the work runs, in a few steps across the page: each step a round number in a colour block, a title and a line.

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 83 of 125, 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

Sample features

Three screens of a sample product

Orders per day

Two weeks of sample orders, one bar a day.

A bar chart of sample orders per day over two weeks

Stock by warehouse

The share of sample stock each warehouse holds.

A ring chart: North 50 %, East 32 %, South 18 % of the sample stock

The latest orders

Order number, customer, items, status and total.

A table of three sample orders with their status and total

A product's features as tabs: a named radio group over one panel per feature, each with its title, body and image, the image optionally in a browser window.

every browserclick

Give your coding agent the Moonarc catalogue

Add the MCP server once and the agent searches components by intent and byte budget, reads their craft notes and gets the command that installs them.

  • search_motion: Components for an intent under a JavaScript budget in raw bytes.
  • get_component: Source, props and craft notes: easing, duration, the reduced-motion branch, ClientRouter behaviour.
  • get_install_command: The exact command.
# in your project
claude mcp add moonarc -- npx -y @moonarc/mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "moonarc": { "command": "npx", "args": ["-y", "@moonarc/mcp"] }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "moonarc": { "type": "stdio", "command": "npx", "args": ["-y", "@moonarc/mcp"] }
  }
}
# ~/.codex/config.toml
[mcp_servers.moonarc]
command = "npx"
args = ["-y", "@moonarc/mcp"]

A feature section with code beside the copy: a headline, copy and a short list on one side, and CodeTabs on the other, one tab per client or language, each panel with its own copy button.

every browserclick

What a practice charges, as tables a reader can trust: one a group, each row a service, its price and a note, and where insurance applies a column that says in words whether it is covered, partly or not, with a mark that repeats it in shape.

every browserscroll

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

Room by room

Point at a room in the list to find it on the plan.

Rooms · Ground floor

  • Living room22.5 m²
  • Kitchen18 m²
  • Hall7.5 m²
  • Dining room19.5 m²

Total67.5 m²

Rooms · First floor

  • Bedroom 118 m²
  • Bedroom 218 m²
  • Bathroom10.5 m²
  • Bedroom 312.3 m²
  • Landing8.8 m²

Total67.5 m²

A home's floors drawn from its rooms: each room a rectangle on a grid of metres with its walls round it and its name and area over it, and beside the plan the same rooms as a list with the total.

newly · Chrome 105 · Firefox 121 · Safari 15.4pointerclick

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

A footer for a studio or a person: a line and the email address to write to, columns of links, and the name set across the whole width at the bottom.

every browserscroll

The foot of a maker's site, made like the label sewn into what they make: a panel in a colour block with a stitched edge, the name large (a second part in the emphasis face), the link columns, a row of care symbols drawn as line icons with their words (how to wash it, that it goes in the oven, that it is mended for free) and a few small lines in the mono face.

every browserhover

A footer that signs off like a letter: on a strong colour block, a line of thanks, the name set large with its second part in the emphasis face and a stroke drawn under that part, a way back to the signup, the links in columns and a few small lines at the foot.

Chrome 115 · not Firefox · Safari 26scrollhover

The first screen of one person's work, as a bento.

newly · Chrome 105 · Firefox 128 · Safari 17pointerscrollalways

The opening of a colour-block site: the headline rises line by line out of its masks, its last word turns through a few in the emphasis face (RotatingText), a round badge with text running around it links further down the page, the lede and two pill actions sit under it, and a strip of tiles in the palette's blocks runs across the bottom (Marquee), each a drawing (Motif) or a picture with a caption.

every browserloadhover

A first screen in type as large as it will go: the name or the claim in a few lines that rise once, one after another, from masks of their own (SplitText by line).

Chrome 115 · not Firefox · Safari 26loadscroll

The first screen of an event, made like its poster: one colour block with the edition and the place in the mono face, the name huge, the dates, a line, two actions, three facts, a countdown to the doors (core CountdownFlip) and the days as chips, and beside them a composition of nine shapes in the block's drawing colours that pop into place one after another as the page opens and turn a quarter when a pointer rests on them, one of them turning round a quarter at a time once they are in, inside five seconds, then resting.

every browserloadhover

The first screen of a practice (a dentist, a doctor, a vet, a law or an accounting firm): the headline, a line of what it does, the two things a visitor comes to do (book and call) and a line for the register it is on; beside them the place as one card on a colour block, its front drawn by HomeArt, a line from OpenStatus that says whether it is open now in the place's own time zone, the address, the phone and a few rows a patient or a client asks first.

every browserload

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

Firing 08 is on the shelf

Clay for the table, thrown slowly

Cups, bowls and vases thrown by hand and fired a few dozen at a time.

Fired
Every six weeks
Batch
About 120 pieces
Made by
Two pairs of hands
  • Tall vase32 cm · StonewarePrice: $86

  • Morning cup300 ml · Two glazesPrice: $24

  • Breakfast bowl16 cm · Speckled clayPrice: $32

Show a piece

The first screen of a maker's site: the heading, a line, two actions and three facts on one side; on the other, the products themselves, each drawn on its plate (ProductArt) with its name, a spec line in the mono face and its price.

newly · Chrome 105 · Firefox 121 · Safari 15.4loadclick

A guesthouse by the sea, made up for this demo

A house by the sea, open all year

Seven rooms in an old captain's house, the beach six minutes down the lane. Sample prices.

rooms
7
to the beach
6 min
The place

The first screen of a place to stay: the headline and a line of what the place is, a few facts, and the place by day and by night in one frame: light falling over the day picture (LightRays), the windows lit in the night one, and a pair of radios under them that picks which shows, with no script.

every browserloadclick

What a guest agrees to before they come, set out to be read: the arrival and departure times large, the house rules as a list where each answer is a word with a mark that repeats it in shape (a tick, a cross), what the stay includes, and the policies in a sentence or two each: cancelling, a deposit, a late arrival.

every browserscroll

The product in the middle, its integrations around it, and data travelling along the lines between them: up to eight on the lines, more on a ring around the product.

every browseralways

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

Who is on: each person a drawn portrait on a colour block (PortraitArt, seeded from the name), the name and what they do, and on the back of the portrait their session: its title, the day and time, the stage.

newly · Chrome 105 · Firefox 121 · Safari 15.4hover

The Boathouse

Southbank, on the river path

$1,150,000 Guide price (a sample)

Bedrooms
4
Bathrooms
3
Floor area
204 m²
Built
2019

Book a viewing

The top of a home's own page: its pictures on one side, each a building drawn by HomeArt under a Lens that magnifies it at the pointer, with a row of thumbnails that picks one (radios and :has(), so the arrow keys move along them); on the other side the price, the title, the address, the facts and two actions.

newly · Chrome 105 · Firefox 121 · Safari 15.4clickpointer

Homes for sale

Pick a kind and the least bedrooms: the cards filter with no script. Sample homes and prices.

Kind
Bedrooms

6 homes6 homes5 homes3 homes2 homes3 homes3 homes3 homes3 homes2 homes3 homes3 homes2 homes0 homes0 homes

No home matches. Try fewer bedrooms or another kind.No home matches. Try fewer bedrooms or another kind.

Homes as cards (the building drawn by HomeArt, the price, the address, the beds, the baths and the area) with filters that work with no script: a group of radios for the kind of home and one for the least bedrooms, and :has() rules written for the list at build hide every card that does not match.

newly · Chrome 105 · Firefox 121 · Safari 15.4clickscroll

The first screen of an estate agency: the headline, a line, two actions and a few figures on one side, and on the other the homes on the market now, one large and two small, each its building drawn by HomeArt with the price and the street on a card over it, every one a link to its page.

every browserload

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

Materials

What the pieces are made of

Three clays and the glazes we mix from them. Pick one to see it up close.

Materials

Speckled stoneware

A grey clay with dark iron spots that come through the glaze as it fires.

Goes into Cups, bowls, plates

Porcelain

White, smooth and hard to throw thin. It lets a little light through at the rim.

Goes into Espresso cups

Red earthenware

A soft, warm clay that fires at a lower heat and is glazed inside to hold water.

Goes into The low vase

Ash glaze

Wood ash, sieved and mixed with feldspar; it runs in the kiln and pools green.

Goes into Vases, jugs

What the work is made of, as a short index: each material a row with its name, where it comes from and a small swatch, and beside the rows a large card for the one picked, with the swatch drawn big (a weave, a speckle, a grain, a crumb or a ripple, in the colours of its block), a note and what it goes into.

newly · Chrome 105 · Firefox 121 · Safari 15.4clickhover

What it would cost a month

Each month
$3,796
Loan
$676,000
Interest over the term
$462,770
Monthly payment by deposit and term
Deposit15 years20 years25 years30 years
10%$5,857$4,852$4,270$3,899
20%$5,206$4,313$3,796$3,465
30%$4,555$3,774$3,321$3,032

An estimate to plan with. A lender works out the real figure.

What a home costs a month.

every browserclick

Numbers someone can plan around, on a colour block: a panel in one of the palette's blocks with a drawing (Motif) half out of its corner, a short line and a heading, then the figures in a row, each large in the block's emphasis colour with its unit beside it and a line under a hairline.

newly · Chrome 91 · Firefox 128 · Safari 17scroll
Sample Studio

a sample page under the bar

Open the menu: the site in type as large as the screen.

A bar with the name or the mark and one Menu button, and behind the button the whole site in type as large as the screen allows: the menu covers the page, its items arrive one after another, and each label rolls on hover.

newly · Chrome 135 · Firefox 144 · Safari 26.2clickhover

What is around a place to stay, by how a guest gets there: a group a way (on foot, by bike, by car, by boat), each place a row with its name, a line about it and the minutes it takes, and a bar drawn to scale against the farthest place of its group, so the near ones read near at a glance.

every browserscroll

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

Kind words from readers, listeners or students, pinned up as notes: each a card in one of the palette's tints with a strip of tape across its top, tilted a little by its words (the same tilt on every build), the quote and who wrote it with where they are.

Chrome 115 · not Firefox · Safari 26scroll

The notices a regulated practice owes its readers, set where they are read: first, on a panel of its own in the page's ink, what to do in an emergency with the number as a link; then the rest as short notes, each a title, a sentence and a link (the register it is on, how to complain, that the site gives general information and not advice, the access to the building).

every browserscroll

A "now" page in one section: what one person is making, reading, learning and planning at the moment.

every browseralways

Shop

Guides for a slow weekend

  • Guide · 120 pages

    The small web field guide

    How to plan, build and keep a small site going for years.

    What is inside 4
    1. Picking what to build
    2. A page that loads anywhere
    3. Words before pixels
    4. Forms people finish
  • Guide · 48 pages

    Colour in an afternoon

    One colour to a whole palette, with the contrast checks.

  • Membership · yearly

    The Friday membership

    A second letter each month and the guides as they come out.

What one person sells, on a shelf: a course, a guide, a membership, prints or sessions.

every browserhoverclick

Fixed packages with what they cost: each card names a package and who it suits, gives the price and what it is counted in (or "Price on request", for a business that quotes), lists what is included with a tick in a colour block, can carry a bonus line on that block, and ends in an action that asks about that package.

every browserhover

The people of a practice as cards: each drawn by PortraitArt on a colour block, with the name, the role, the qualifications after the name, and the facts a patient or a client checks (the days they are in, the languages they speak, the register they are on and their number), a line in their own words and a link to their page.

every browserscrollhover

Episodes

The latest conversations

All episodes
  1. 29 September 202652 min

  2. 15 September 202647 min

  3. 1 September 202658 min

  4. 18 August 202644 min

The issues, episodes, lessons or videos of one person's work, as a list of rows in the order you give them (newest first).

every browserhoverclick

What a writer needs on one page: the app's icon, the fact sheet (a description list a reader can copy from), the files to download with their format and size, the colours with their values, a few words from the people who make it, and who to write to.

every browserscroll

Free

$0/yr

MIT, forever

  • 125 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

  • 108 sections and 11 GPU effects, demos never gated
  • Every template: Waitlist, Launch, Agentic, Studio, Agency, Atelier, Gather, Creator, Endpoint, Homescreen, Estate, Practice, and Stay
  • 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 rolls every price digit by digit to the other period with zero JavaScript (radios, :has and NumberFlow), the highlighted plan wearing a travelling border beam, cards revealed with a stagger.

newly · Chrome 125 · 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

How a thing is made, as steps sewn on one thread: a stitched line runs down the section and each step is a knot on it (a round number in a colour block, stitched round its edge) with a title, a line and how long it takes.

Chrome 115 · not Firefox · Safari 26scroll
Glaze

Tall vase

Price: $86

A tall vase for branches and long stems, thrown in two parts and joined at the shoulder.

9 of 24 left in this batch

Size
32 cm tall, 14 cm across
Clay
Speckled stoneware
Care
Wash by hand
Delivery

Wrapped in paper and card, and sent the week after it comes out of the kiln.

The top of a product's page: the product drawn large on its plate (ProductArt), with its colourways under it as small swatches (radio buttons) that recolour the drawing in place; beside it the trail back to the shop, the name, the price, a line, how many of the batch are left, two actions, the specifications in the mono face and a few notes that open (care, delivery).

newly · Chrome 105 · Firefox 121 · Safari 15.4click

The next batch, as one colour block: the product drawn large (ProductArt) under a round date stamp, and beside it the heading, a line, how many of the batch are spoken for (a count, and a bar that fills as the panel comes into view), three facts in the mono face and two actions.

Chrome 115 · not Firefox · Safari 26scroll

The shop

Pieces from the current firing

A whole collection on one page, filtered by kind: the products as cards (each drawn on its plate with ProductArt, a hang tag for the price, the name as the card's link and a spec line in the mono face) in two, three or four columns by the box's width, and above them a row of filters with their counts (core FilterGrid: the cards that stay slide into place, and the URL keeps the filter).

newly · Chrome 137 · Firefox 144 · Safari 18.4hoverclick

scroll inside

Sample product

Orders, stock and returns on one screen

The dashboard in the frame is a capture of sample data. Scroll inside the box and the window stands upright.

See ProAll components
A sample dashboard: four figures for the week, orders per day, stock by warehouse and the latest ordersA sample dashboard: four figures for the week, orders per day, stock by warehouse and the latest orders

A product hero: a headline revealed word by word, two actions, a play chip that opens the demo video in a dialog, and the product screenshot in a browser window that leans back 20 degrees and stands upright as the page scrolls.

Chrome 135 · not Firefox · Safari 26.2loadscrollclick

A row of products that runs off the page's edge: each drawn on its plate (ProductArt) with a hang tag for the price, the name as the card's link and a spec line in the mono face.

Chrome 116 · not Firefox · Safari 26hoverscroll

A hero whose entry point is a prompt box: a small label, a short headline, a lead, a large PromptInput with Enter to send, a status line and example tasks.

newly · Chrome 123 · Firefox 152 · Safari 26.2load

A quickstart as numbered steps down a rail that fills as the reader moves through them, each number lighting as its step reaches the middle of the screen.

Chrome 115 · not Firefox · Safari 26scroll

What people who use the app say, as the stores show it: the average large with its stars and how many rated, a bar for each star count with its share written beside it, and a few reviews, each with its stars, its title, who wrote it, when and where.

every browserscroll

Where a service runs: the world in dots with each region pinned and pulsing in turn, a chip at each pin with its code and the latency measured there, and under the map the same regions as a list (name, code, figure), so a reader who cannot see the map, or reads on a narrow screen where the chips would crowd, loses nothing.

every browserscrollalways

Email API

Email that arrives

One request sends it. Webhooks tell you when it lands, and every message keeps its own log.

Sample figures, made up for this demo

POST /v1/emails HTTP/1.1
Host: api.sitename.example
Authorization: Bearer sk_live_••••
Content-Type: application/json

{
  "from": "hello@sitename.example",
  "to": "ada@example.com",
  "subject": "Your receipt",
  "template": "receipt"
}

202 Accepted84 msfra1

{
  "id": "em_7Hq2kD9x",
  "status": "queued",
  "created_at": "2026-10-09T08:14:22Z"
}
GET /v1/emails/em_7Hq2kD9x HTTP/1.1
Host: api.sitename.example
Authorization: Bearer sk_live_••••

200 OK31 msfra1

{
  "id": "em_7Hq2kD9x",
  "status": "delivered",
  "opened": false,
  "events": [
    {
      "type": "delivered",
      "at": "2026-10-09T08:14:25Z"
    }
  ]
}
GET /v1/domains HTTP/1.1
Host: api.sitename.example
Authorization: Bearer sk_live_••••

200 OK27 msiad1

{
  "data": [
    {
      "name": "sitename.example",
      "status": "verified",
      "region": "eu-west"
    }
  ],
  "has_more": false
}

A hero for an HTTP API: the headline beside a console where a request is written line by line, a line runs while it is sent, the status lands with the time it took and the region that answered, and the JSON response streams in under it.

newly · Chrome 105 · Firefox 121 · Safari 15.4loadclick

The rooms of a place to stay as cards: each drawn by RoomArt on a colour block, with its name, how many it sleeps, its beds and its size, what it has (a terrace, a bath, a sea view), a sentence about it and its price from a night, the whole card a link to book it or to its page.

every browserscrollhover

Schedule

Three days, one hall

Day

Fri14 May

Doors and badges from 09:30

  1. 10:00–10:30

    Opening

    Stage: Main stageTalk

  2. 10:30–11:15

    Letters that move

    Type designer

    Stage: Main stageTalk

  3. 12:15–13:30

    Lunch

    Stage: GardenBreak

  4. 14:00–16:00

    Drawing with code

    Illustrator

    Stage: Hall BWorkshop

Sat15 May

The party is in the garden from 19:00

  1. 10:00–10:45

    Fast pages

    Web engineer

    Stage: Main stageTalk

  2. 13:30–15:30

    Motion with manners

    Motion designer

    Stage: Hall BWorkshop

  3. 16:00–16:45

    Everyone reads

    Accessibility lead

    Stage: Main stageTalk

Sun16 May

A shorter day, done by 16:00

  1. 10:30–11:15

    Words on screens

    Writer

    Stage: Main stageTalk

  2. 11:30–13:00

    Light for products

    Photographer

    Stage: Hall BWorkshop

  3. 15:15–16:00

    Closing

    Stage: Main stageTalk

A programme by day: a row of day chips (radio buttons, each a weekday over its date in a colour block) picks the day, and under it the day's sessions in order, with the time in the mono face, the title, who leads it, the stage as a chip in the stage's own colour and the kind of session beside it.

newly · Chrome 105 · Firefox 121 · Safari 15.4clickload

An app's features told down the page while one phone stays in view beside them and its screen changes with each feature.

Chrome 116 · not Firefox · Safari 26scroll

A service's own page, top to bottom: its name and what it is in a sentence, then the parts a reader looks for before booking (what it is, who it is for, what happens step by step, what to bring, what comes after), each under its own heading; beside them a card that stays in view while the page scrolls (position: sticky, nothing animated) with the facts (how long, from what price, whether insurance covers it), the two actions and a line of small print.

every browserscroll

What a practice does, by group: each group's name and a line about it on one side, its services on the other as rows, each with a line of what it is, how long it takes and what it costs from, and a link to its own page.

every browserscroll

Sample services

What an imaginary studio does

Brand identity

A name, a mark and the rules that hold them together, for a company that is new or has outgrown its look.

Deliverables

  • Logo and mark
  • Type and colour
  • Guidelines
Websites

Sites designed and built by one team, from the first sketch to the code that ships.

Deliverables

  • Design system
  • Astro build
  • Content model
Product design

Screens for an app or a tool, drawn with the people who will use them and handed over as working components.

Deliverables

  • Flows
  • Interface
  • Components
Motion

The logo in motion, a product film, the interface itself: motion that says one thing each time.

Deliverables

  • Motion identity
  • Product film
  • Interaction specs

What a studio or a freelancer does, as numbered rows at display size that open one at a time: each row names a service, and opens to a short text beside the list of deliverables.

newly · Chrome 131 · Firefox 143 · Safari 18.4clickhover

A sign-in card in two steps, email then a one-time code, as the front end of your own auth service.

newly · Chrome 119 · Firefox 121 · Safari 16.5click

A newsletter signup beside a look at what arrives: the heading, a line, one email field with its button and the count of people already reading, and next to them the next issue as it lands in an inbox (who it is from, the subject, the day it sends, its first lines fading out) on a small stack of the issues before it.

every browserclickhover

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 status page in one section: the state of everything as the heading with its light (it pulses three times, then stays lit), the uptime of the days shown as a Gauge, each service with its state and a bar for every day (up, degraded, an outage, maintenance, no data) rising in turn as the board arrives, and the incidents with their updates, newest first.

every browserscrollhover

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

Who it is for, as stickers: a heading and a line beside a cloud of rounded labels in the palette's blocks, each tilted a little its own way, coming in one after another as the cloud enters the screen (Reveal).

every browserscroll

Steps on one side and one visual on the other that stays in view and changes with them, under a lead paragraph that brightens word by word as it is read.

Chrome 116 · 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, with zero JavaScript.

Chrome 120 · not Firefox · Safari 26scroll

The call to get the app: a panel of the app's colour block with the headline, the store buttons and, on a wide screen, a QR code to the app, and a phone rising out of the panel's lower edge as the panel comes into view, its lower third cut by the panel.

every browserscroll

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

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

Two tilted bands that cross the page, each a marquee of the same few words running the other way: one in the ink tone, one in a colour block, the words alternating between the body face and the emphasis face with a spark between them.

every browseralwayshover

The foot of an event's site, made like its ticket: a colour block with the name large (a second part in the emphasis), the dates and the place, the link columns and a few small lines; a perforated line, and past it the stub, with "Admit one", the dates again and a barcode drawn from the name.

every browserhover

The tickets, as tickets: each tier a card with a perforated line under its head (a notch cut from each side), the name and the price, what it includes, how many are left (a count, and a bar that fills as the card comes into view) and its action.

Chrome 120 · not Firefox · Safari 26scrollhover

Pricing

Pay for what you send

Sample plans and prices, made up for this demo.

Usage a month
  • Lowest price at this usage

    Free

    For a side project

    $0 / monthPast this plan's limitPast this plan's limitPast this plan's limitPast this plan's limit

    $0 includes 3,000 emails

    • One domain
    • Logs for a day
    Start free
  • Lowest price at this usage

    Pro

    For a product

    $20 / month$20 / month$65 / month$200 / month$875 / month

    $20 includes 50,000 emails, then $0.90 / 1,000 emails

    • Ten domains
    • Webhooks
    • Logs for 30 days
    Start with Pro
  • Lowest price at this usage

    Scale

    For volume

    $90 / month$90 / month$90 / month$90 / month$540 / month

    $90 includes 250,000 emails, then $0.60 / 1,000 emails

    • Dedicated IP
    • Logs for a year
    Talk to us

Usage-based pricing: a slider of monthly usage and every plan priced at the usage picked, each price rolling to its new figure, the cheapest plan for that usage lit and badged.

every browserclick

Where it is and how to get round it: a drawn site map in a colour block with the places on it as numbered dots in their own colours (the stages, the food, the entrance), and beside it the same places as a numbered list with a line each; pointing at a place in the list lights its dot on the map.

newly · Chrome 105 · Firefox 121 · Safari 15.4hover

Where to find a studio, a shop or a counter, as one card in a colour block: a drawn map with a pin, the address with a directions link, the opening hours for the week, the ways to get in touch, and above them a live line that says whether it is open now and until when (or when it opens next), with the time where the place is.

every browserload

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

An app beyond its own screen, in a bento: its home-screen widgets in three sizes, its lock screen (a phone's top half, cut by the tile) and its watch face, each drawn from rows (AppScreen without its chrome) on a tile of a colour block, with a title and a line under it.

every browserscroll