
The colour columns
Hover, SVG
NewFree
In the minimal style: the dining room of a small restaurant drawn like an architect’s plan, in thin lines. The table under the pointer pulls its chairs out one after the other, on a spring that overshoots by a hair, each turned a little as if someone had just stood up, and turns blue; a table already booked is hatched, its chairs stay put and the table gives a small shake. A click holds the table for you.
A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN. The React and Vue tabs hold the same demo as a ready component, which switches its animations off when it leaves the page.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tables on the plan</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/instrument-sans@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<header class="top">
<span class="top__name">Lume</span>
<span class="top__note">Book a table, Friday at eight</span>
</header>
<!-- the plan of a small restaurant drawn in thin lines. The table under the pointer pulls its chairs out, one
after the other, as if the room were ready for you; a booked table stays put and gives a small shake -->
<section class="room" aria-label="The dining room" data-room>
<svg class="plan" data-plan role="img" aria-label="The plan of the dining room"></svg>
</section>
<div class="read" aria-live="polite">
<span class="read__win"><span class="read__what" data-what>Choose a table</span></span>
<span class="read__win"><span class="read__when" data-when>Friday, 8 pm</span></span>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="script.js"></script>
</body>
</html>Change values, colours and text with the controls and watch the animation respond live. Or write in the code yourself. Then download the folder with your changes.
64 values to change
With the Animorio connector, Claude Code takes it from here, guide included, and fits it into your project. Paste this request:
Take “Tables on the plan” from Animorio and fit it into my siteThe room is drawn on a plan of 1000 by 600 units inside an SVG with a viewBox, which fits any size by itself. The tables are a table (TABLES): number, shape, place, seats, a note and whether it is booked. For each shape a function works out the size of the top and where the chairs go: in a circle round the round ones, one per side for the square ones, in two rows for the long table, in a column in front of the counter. A booked table has hatching of slanting lines cut with a clipPath to its shape.
Every chair sits in a group moved to its place and turned so that its vertical axis points away from the table. So pulling it out only means moving the y of the rectangle inside the group: GSAP moves it by PULL units with back.out, each chair STAGGER seconds after the last, and turns it by TURN degrees, one chair one way and the next the other. On the way back the order is reversed and the overshoot smaller.
The point on the screen is brought into the plan’s units with the inverse of getScreenCTM. The nearest table answers, measured from the rectangle that holds its top and its chairs, as long as it is within WALK units: so there is no dead gap between one table and the next. The colour turns blue with a tween on stroke and fill, the number takes weight on the wght axis. A booked table does not move its chairs: it gives a sideways shake with GSAP keyframes.
On a screen taller than it is wide the plan is drawn with x and y swapped (a mirror on the diagonal): the room stands upright, the counter goes to the bottom, the door to the top right, and the chairs’ angles become 90 minus the angle. The words are not turned. The drawing is only redone when the screen goes from wide to tall; otherwise the SVG resizes itself.
A GSAP timeline draws the walls with stroke-dashoffset in a single stroke, brings in the door and the windows, swells the tables from their centres and slides the chairs in from under the tables, one table after the other; at the end the first free square table pulls its chairs out by itself. The line under the plan rolls through two little windows at every change: table, seats and note on the left, free, booked or yours on the right.
| Name | File | Default | What it changes |
|---|---|---|---|
TABLES | script.js | [[1, 'round', 170, 175, 2, 'in the quiet corner', false], …] | The tables: number, shape (round, square, long or bar), place on a plan 1000 by 600, seats, a note, booked or not. |
PULL | script.js | 13 | How far a chair is pulled out, in plan units. |
TURN | script.js | 7 | How far a pulled chair turns, in degrees. |
STAGGER | script.js | 0.05 | The pause between one chair and the next, in seconds. |
OVERSHOOT | script.js | 2.4 | How far the chairs overshoot (1 barely, 4 a lot). |
TIME | script.js | 'Friday, 8 pm' | The evening written in the line at the bottom. |
WALK | script.js | 46 | How far from a table, on the plan, the pointer still chooses it. |
--accent | style.css | #2446ff | The colour of the table under the pointer. |
For the booking page of a restaurant, a bar or a trattoria, for the room of an event venue, for the tables at a wedding or the desks of a coworking space to choose on a small plan. Changing TABLES draws any room.
The same animations with adapted sizes: on a tall screen the plan turns (x and y swapped) and the room stands upright, so it fills the page. Touching a table brings its chairs out and the table stays yours; touching the floor lets it go; dragging the finger goes from table to table. The line at the bottom goes onto two lines.
Nothing moves: the chairs stay where they are and the booked table does not shake. The table under the pointer turns blue with a short fade, the line at the bottom changes with a fade and the page appears already drawn.
GSAP 3.15.0, Instrument Sans (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 7.9 KB; the libraries: GSAP 28 KB.
Tested on 19 October 2026
Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.
With your account’s email and password.
or with your email
You’re signed in as .
With your account, you can download the zip of every animation and every pack, for free.