
Zooming into the Mandelbrot set until something happens (nothing happens) #math #fractal
50 components · 263 stories
Display
ShortcutsAlt+Shift+key
12 components
src/components/ui/button.astro20 stories
Fill style and colour are independent axes.
src/components/ui/button.astro8 stories
src/components/ui/button-group.astro3 stories
src/components/ui/badge.astro15 stories
Fill style and colour are independent axes.
src/components/ui/badge.astro6 stories
src/components/ui/kbd.astro4 stories
A key, or a combination in `keys`. Apple devices see ⌥ ⇧ ⌃ ⌘ for the modifiers.
src/components/ui/status.astro8 stories
A light takes the text colour unless given a tone. Pulse is off under reduced motion.
src/components/ui/avatar.astro8 stories
Initials stand in when there is no image.



src/components/ui/alert.astro4 stories
An alert with no icon and no variant.
The action completed successfully.
Something might need your attention.
This action could have serious consequences.
src/components/ui/card.astro6 stories
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Hover does nothing on this one.
src/components/ui/dropdown.astro4 stories
A native popover: opens, closes on Esc or an outside click, no JS.
Any content goes here: settings, links or a short form.
Settings
Any content goes here: settings, links or a short form.
Any content goes here: settings, links or a short form.
Any content goes here: settings, links or a short form.
src/components/ui/corner-window.astro3 stories
Pinned to the viewport's corner on a page; inline here. A popover on wide screens, a bottom sheet on narrow ones.
Chat with Greg

Hi! I'm Greg.

Need a hand with anything?


You:
Help
Any content goes here: a note, some links or a short form.
Settings
Lines up with the button's start edge, for the bottom-left corner.
src/components/ui/progress.astro8 stories
Takes the tone it sits in unless given one. Attachments and carousel pips are built on it.
src/components/ui/scroll-cue.astro2 stories
The arrow nudges, except under reduced motion.
7 components
src/components/ui/toggle.astro5 stories
src/components/ui/select.astro3 stories
src/components/ui/input.astro8 stories
src/components/ui/textarea.astro7 stories
src/components/ui/segmented-control.astro4 stories
Plain radios: they submit with a form and can drive CSS via :has().
src/components/blocks/attachment/attachment.astro11 stories
The description names the state; colour and shimmer only echo it.


src/components/blocks/attachment/attachment.astro5 stories
For image previews: the media stacks above the name.




src/components/blocks/attachment/attachment-group.astro2 stories
Scrolls sideways and snaps; the overflowing edges fade.






8 components
src/components/blocks/quote.astro4 stories
It's not a diary, it's a journal.

A quote with no avatar.
A quote with just a name.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.

src/components/blocks/stat.astro4 stories
Counts up on first scroll into view, with JS.
12,48012,480
Downloads
$1.2M$1.2M
Spent on kebab this year
99.95%99.95%
Uptime over the last 90 days
4.0/54.0/5
Average rating, from a long list of reviewers that wraps
src/components/blocks/heatmap/3 stories
Levels from 0 to 4 on a grid of any size, optionally as a calendar. Can play the Game of Life on its cells.
src/components/ui/icon-list.astro2 stories
src/components/blocks/masonry.astro2 stories
Columns of uneven items. `min` sets the narrowest column, `columns` the most there are.
Short.
A quote of middling length, long enough to wrap onto a second line.
A much longer quote, to show items keeping their own height. In a grid, the other items in its row would stretch to match it and leave blank space at the bottom; here they don't.
Another short one.
Items read down each column, then across.
The last one.
Short.
A quote of middling length, long enough to wrap onto a second line.
A much longer quote, to show items keeping their own height. In a grid, the other items in its row would stretch to match it and leave blank space at the bottom; here they don't.
Another short one.
src/components/blocks/accordion/2 stories
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
src/components/blocks/code.astro8 stories
Highlighted at build time by Shiki, in the palette's colours. The copy button needs JS and is absent without it.
/** Writes the pointer position on each subscriber, once a frame. */
export const track = (targets: HTMLElement[]) => {
let raf = 0;
addEventListener("pointermove", (event) => {
if (event.pointerType !== "mouse") return; // touch has no hover
raf ||= requestAnimationFrame(() => {
raf = 0;
for (const el of targets) el.style.setProperty("--x", `${event.clientX}`);
});
});
};---
import Button from "../components/ui/button.astro";
const { label = "Save" } = Astro.props;
---
<form method="post">
<Button type="submit">{label}</Button>
</form>.card {
padding: var(--space-md);
border: 1px solid var(--color-border);
&:hover {
border-color: var(--color-primary);
}
}$ deno run build
✓ Completed in 1.2s
$ deno run checkconst message = "A line long enough that it runs past the edge of the block, which shows whether it wraps or scrolls";const message = "A line long enough that it runs past the edge of the block, which shows whether it wraps or scrolls";No language: plain text.font: var(--type-code)src/components/blocks/contact-method.astro3 stories
4 components
src/components/blocks/message/message.astro8 stories
Start for the other side, end for the reader. The avatar sits level with the bubble, not the footer.

Did you finish the history project yet?
Not even close. Rowley spilled juice on the poster.
Here's the draft, tell me what you think.
New Zoo-Wee Mama strip is up on the class board! This one finally has a sidekick.
Greg says the ending is too predictable but I think it's the best one yet.

Can you send me your notes?

Found the old one, use this.
https://example.com/an/extremely/long/link/that/has/no/spaces/to/break/at/whatsoever
src/components/blocks/message/message-bubble.astro8 stories
Ghost drops the frame and the 80% width cap.
Solid bubble, neutral tone.
Solid bubble, primary tone.
Tinted bubble, neutral tone.
Tinted bubble, primary tone.
Outline bubble, neutral tone.
Outline bubble, primary tone.
Ghost bubble, neutral tone.
Ghost bubble, primary tone.
src/components/blocks/message/message-group.astro3 stories
The first message names the sender; the last carries the avatar (the first, for ghost messages).

Hey.

Are you coming to the Halloween party?

Mom says I can go if you go.
Who took the last juice box from the fridge?
It was labelled.
In marker.
Maybe.
Only if we skip the haunted house.
src/components/blocks/message/interactive-message.astro3 stories
Pick a reply to walk the dialogue tree. Without JS, only the opening shows. Rodrick's branches run page-wide actions.
Hey Greg!
Want to come over and play Twisted Wizard?
You:
What do you want, dweeb?
You:

Hey Greg!

Want to come over and play Twisted Wizard?


You:
6 components
src/components/blocks/media-card.astro4 stories

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
src/components/blocks/logos.astro1 story
src/components/blocks/badge-88x31.astro15 stories
src/components/blocks/carousel/3 stories
Swipes and scrolls natively without JS. Autoplay pauses on hover and stops for good on focus or a press.
A slide can hold any component. This one is a side hero.

The track is as tall as its tallest slide, so nothing is clipped and the frame never jumps.

Arrows, counter and pips sit in the footer, clear of slide content.

Focus the track and use the arrow keys, Home or End.

01/
A slide can hold any component. This one is a side hero.

The track is as tall as its tallest slide, so nothing is clipped and the frame never jumps.

Arrows, counter and pips sit in the footer, clear of slide content.

Focus the track and use the arrow keys, Home or End.

01/
One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

One of many, to see how the pips hold up.

01/
src/components/blocks/blueprint-frame.astro3 stories
Draws around any content, which brings its own surface. The label is optional.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
src/components/blocks/card-grid.astro3 stories
One, two, then three columns. A short last row is centred; narrow the preview to see two columns.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
Same size as the rest.
5 components
src/components/blocks/figure.astro4 stories




ratio. A longer caption wraps under the image without pushing the frame any wider than it is.src/components/blocks/audio-player.astro4 stories
Falls back to the browser's own player without JS.
src/components/blocks/media-player.astro3 stories
Falls back to the browser's own player without JS. K, J/L, M, C and F work while focus is inside.
src/components/blocks/radio/5 stories
Without JS, the browser's own player for the first track, and links to each file.




src/components/blocks/shorts/2 stories
Without JS, a feed of the browser's own players. Up/Down, K and M work while focus is inside.


Zooming into the Mandelbrot set until something happens (nothing happens) #math #fractal


Conway's Game of Life but the cells are pink
8 seconds of gradients to reset your brain


Rule 110 is Turing complete and it looks like this


Conway's Game of Life but the cells are pink
8 seconds of gradients to reset your brain
3 components
src/components/blocks/terminal/4 stories
src/components/blocks/destructor.astro1 story
Equip the gravity gun, then click anything on the page to pull it out and throw it. Needs a mouse.
Perhaps with a mouse?Perhaps on a desktop browser?
src/components/blocks/status-board/4 stories
Hosts and the probes run against them, with a timeline of results from a live status feed.
Status unknown
1 endpoint down
Status unknown
Status unknown
5 components
src/components/sections/section.astro3 stories
With an id, the heading names the section for screen readers.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.
Lead copy, centred under its heading.
src/components/sections/side-hero.astro2 stories
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore.

src/components/sections/navbar.astro5 stories
src/components/sections/footer.astro1 story
src/components/sections/sidebar/2 stories
A collapsible menu on its own; open and sticky beside the content in a wide SidebarLayout, as on this page.