Reconstructed CA3 pyramidal cell bodies, each in a different colour

hologram ui components

scifi-ui

tap to activate

A library of hologram and HUD parts for a dark page. Step rails, panels that boot up, a loading state that draws a cell, a modal surface, and a particle trace for media.

Step rail

One rail, three stops, each reported on a holobar:change event. Here it steps through three measured MICrONS viewers, carried across whole from the Cortex page: the brain at true scale, the nine cell types, and one spike crossing one synapse. Drag it, tap a tick, or arrow-key from the whole brain down to a single spike. Each viewer loads its real meshes the first time the rail reaches it, and only the one on screen renders.

two brains, one spacetrue relative size

Surfaces load when you reach them

Human cortex and cerebellum Mouse brain Mouse V1, inside the brain, where this volume was cut

The two buttons are for a keyboard: focus one and the arrow keys turn that brain, with shift for a bigger step. Every figure above is arithmetic on the bounding boxes recorded beside the meshes, so it moves if the surfaces are ever re exported.

nine cells, one volumedrag to turn, scroll to zoom

Meshes load when you reach them

Each cell is framed to the same size on screen so the shapes can be compared. Their real extents differ by more than a factor of ten, and that number is in the readout rather than in the framing.

one spike, one synapsethe route is measured

Both cells load when you reach them

Press it again before the first one lands

Presynaptic cell, the one that fires Postsynaptic cell, the one that receives The synapse, and the origin of this scene

What this animation is not. There is no membrane model behind it: no millivolts, no channel kinetics, no refractory period. The spark takes four seconds to cross those two and a bit millimetres because that is long enough to watch, and a real spike would cross them in a few thousandths of a second. What is measured is the route and the distances. Both meshes were re extracted in one frame centred on the synapse, so the bright green point is a real place in a mouse brain.

Hologram material

The one 3D part. A three.js material that turns any mesh into a projected volume of light: near clear where it faces you, an electric cyan rim where you see it edge on, a lattice of sharp dots for the surface, and every so often a burst of interference that shivers the vertices and pulls the colour channels apart. No scanlines and nothing scrolls. The lattice sits in world space, so it holds still while the object turns, the way a projector's raster would. Every parameter is a slider; every mesh is real, two whole brain surfaces and the nine MICrONS cells from the rail above. Three eras sit on the one material: 2026 is that projected surface; 2076 gives it a volume, the interior glowing by how much object each ray passes through, and rings that run out from wherever you touch it; 2226 is a light field, an interference lattice whose nodes shift with your viewing angle and a diffraction spectrum at the rim. It also has a page of its own.

one mesh, one materialdrag to turn, scroll to zoom

The surface loads when you reach it

Era

Style

Colour

Mesh

Dynamics

Plays a recording on this hologram: 108 MICrONS cells, 30 s of calcium, real timing.

Fresnel is a silhouette effect, so a dendrite thinner than a pixel has no facing surface to be clear and no edge to glow. The cells load twice as close as the shells, with a preset that softens the rim and lifts the body, and say so in the code.

Underline that draws itself

A hairline draws out from under a heading when it first comes into view, and draws again when you point at it or tap it.

Reconstruction, stage two

Panel that boots up

Two bright heads run the border in opposite directions and meet, an inner backlight swells, and the panel resolves out of a blur. Once when it first comes on screen, and again every time you point at it or tap it. The masthead at the top of this page is the same component.

Reconstructed CA3 pyramidal cell bodies, each in a different colour
cell bodiesone colour each

Scan sweep

A thin line passes across a panel once when you point at it, tab into it or tap it, whatever the panel's height.

Wireframe diagram of the imaged tissue block with one cell inside for scale
The imaged block, 1 by 1 by 0.1 mm.

Image card

Near black ink instead of tinted glass, so the render pops. The rim and backlight live entirely in the box shadow, so nothing moves and the image is never repainted. Point at a card, or tap it, and a bright head runs the perimeter.

A mossy fiber terminal wrapped around a thorny excrescence
one bouton1 thorn, dozens of contacts

Dialog

The EyeWire II sign in modal, reproduced. A drifting particle field, a cycling gradient border, two counter rotating rings, and a materialise that settles through a soft overshoot. A real <dialog> opened with showModal, so focus is trapped and Escape closes it.

This is a visual component only. No authentication, no form element, nothing to sign into, and no request goes anywhere.

Loading state

The cell from the sign-in dialog, drawn again as a loading state. Every branch grows outward from the soma while you wait, and only once the cell stands complete do the action potentials begin to travel it. The bar reports a real count when you have one, rather than inventing a number.

loading meshes

Researcher profile

The EyeWire II researcher profile, the real component carried across whole: the tabs, the achievement badges, the streak and the trophy case. Open it, then click any badge for its detail, or tap a badge in the strip below to replay its award ceremony. A visual component: no account, nothing to sign into.

visual component only

💎

Amy Sterling

@amy · 48,732 edits · 7 day streak

Achievement toast

The success state from EyeWire II Brain Quest: a toast and a confetti burst fired together. The card announces through a live region, dismisses on a timer that pauses while you point at it or tap it, and the burst respects reduced motion.

Tinted lift card

Each card sets one property, --holotint, and that single value colours both the corner glow and the shadow it pools as it lifts. Point at one, or tap it, and it comes up.

cyan

One property per card

The tint reaches the shadow as well as the overlay. Tint only one and it collapses into a coloured smudge.

violet

Hover, focus and tap agree

Everything the pointer gets, a keyboard and a finger get too. The card lifts on focus-within and on a tap.

warm

The one warm accent

A cool field with a single warm card in it. Two warm accents and the grid stops reading as an instrument.

Icon rail

A toolbar of icon buttons with rest, hover, focus, pressed and selected states. Real buttons, inline SVG, no !important. The third is a toggle and reports with aria-pressed.

Readout panel

One label, one number, one line of context. Say something true, and the ornament stops being ornament.

this one cell receives

165

mossy fiber synapses, from only 6 fibers. A single terminal makes dozens of contacts on one thorn.

Tutorial callout

A callout that anchors to a target, flips to the side that fits, clamps into the viewport, then slides its beak to keep pointing. Escape dismisses, the arrows step, and the page scrolls the whole time.

Particle trace, on an image

An arc of light runs the boundary once, struck from wherever your pointer crossed or your finger landed, then breaks into particles. Every value in the HUD is read off the media element at runtime.

A CA3 pyramidal cell with the six mossy fibers that reach it
One thorny pyramidal cell, 4.5 million triangles in the original.

Particle trace, on a video

The same treatment over video, plus a play affordance that hides on play and returns on pause. The native controls stay for scrubbing.

An action potential travelling real reconstructed cable. Tap or hover the frame, then press play.

Scout tag mode

The whole interaction from EyeWire II's Scout tag mode, ported from TagModePanel.vue and holo_trace.ts in the eyewire-ii-community branch of ng-extend. This one is a round trip: the panel began by borrowing this library's materialize and swarm, then grew a light choreography of its own in production, and that choreography now comes home. Pick a type and click the data after arming (or hold T): a spark answers at the click and the point waits as a pin. Submit sends particle streams flowing to the box's midpoints, where they charge and light the border from both points as the success box arrives. Click the success box and one bright lap sends it off while the beam draws the form back. The collapse is the oddly satisfying one: races the zip light upward, masking the box away beneath it, and draws it back with the beam as the reveal mask. Closing zips the panel away entirely; reopening flings a burst that coalesces onto the arriving border. Inputs are inert, nothing is submitted.

scout 0

Shimmer reveal

EyeWire II's welcome: the app arrives behind a dark veil that melts away on a cosine ease while calcium-imaging sparkles bloom and dissolve, so the scene is revealed through the particles instead of being covered by them. Ported from the sparkle mode of ConfettiCelebration.vue, on its shipped one-second "moment" timing.

Segmented neuron somas

Letter reveal

The tutorial's arriving title from TutorialStep.vue: the card blurs in, then the title lands letter by letter, each glyph overshooting two pixels before settling. Two shipped rhythms: a modal card paces letters at sixty milliseconds, a pointer callout compresses to fifteen capped at one-eighty so short hints do not dawdle.

Notification scan-in

The notification detail from NotificationFeedPanel.vue: the panel materializes from blur and overbrightness on the shared entrance curve, and a scanline sweeps its top edge on a 3.4 second lap, the holographic tell. The scan pauses while the card is off screen.

Recap roll-in

The Weekly Recap's arrival: the report materializes through the three stage curve, then its sections roll in top to bottom on staggered two-hundred millisecond entrances, so the summary reads as assembling rather than popping whole. From WeeklyRecapPanel.vue and the profile panel's section stagger.

Trophy orbit

The trophy room's featured award from UserProfilePanel.vue: five counter rotating rings, twelve orbit dots on two radii already mid flight from the first frame, a breathing aura, and the award floating on a slow alternate. Ambient by design, a trophy room is a place you linger, and it pauses entirely off screen.

The astrolabe badge THE ASTROLABE found a cell nobody had opened

Streak flame and toast countdown

Two small honest pieces. The streak readout flickers its flame on a two second cycle while the count's amber glow breathes on three, deliberately out of phase. The toast's two pixel countdown bar drains its five seconds linearly, so the auto dismiss is visible instead of a surprise; the four type tints are as shipped.

🔥 17 days

Registration

From a connectome pipeline, the ALIGN stage carried whole. The registration arrow and the registered volume were cut out of this card, and on their own neither says much; together they say the thing. On the left the raw serial sections, eight sheets of real EM sheared apart by that app's own disorder formula so no two agree. In the middle the arrow. On the right the same tissue as one continuous cuboid, with the mint ping marking a coordinate inside it.

Drag the confidence and the sheets converge. They never land perfectly, and that is the claim: raw sections do not stack on their own, which is why registration exists, and the cuboid on the right is the output rather than the input. The floor of 0.42 on the scatter is the site's own value.

2D IMAGES serial sections
ALIGN
REGISTERED EM VOLUME one continuous cuboid

Timeline

From human-brain: holo-timeline.js, the layer that replaced that site's scattered setTimeout chains. Sequences are authored in one place, shaped like the seek and tween core of GSAP with no dependency. Its two rules travel with it: reduced motion collapses a sequence to its final state in one step, and nothing renders by itself, the caller owns the tick. The demo below is one authored sequence: the bar fills while the glow crossfades, a marker fires the lock label, a beat passes, and the panel settles.

acquiring volumeidle

registration locked, streaming

Cockpit HUD

From BE THE FLY, carried whole: the neural interface panel that docks on the right of the play field. This one is a round trip, because that game vendored this library, so its HUD is already written against these tokens and the port reads them natively; the game's own note on its objective bracket calls it "the scifi-ui idiom used elsewhere on the page". The lit objective runs its shipped sweep, the cell identity carries its type chip, its measured count and the gold pip that marks cells from a dataset other than BANC, and inside the stage the real EPG renders relight under the reticle while the drawn-light compass reads the same heading the renders do. Hold A or D, or the arrow keys, or the on screen labels, to turn.

Neuron ignite

Also from BE THE FLY: the hologram tank's layer system. The whole cell waits dim and desaturated as context; begin an action and its layer ignites over it, saturating up from darkness with a drop shadow mixed from the action's own accent. Both layers share one transform, so they never drift out of register.

A pyramidal cell lit by the active action
ACTION LAYER Feeding

EPG compass

The fly's own heading dial, drawn with the game's own renders. In BE THE FLY the compass is the EPG ring of the ellipsoid body: the base render sits dimmed while one of sixteen sector renders relights over it as the heading sweeps, a new compass neuron waking up, and the reticle snaps after the turn on its shipped 80ms transition. The readout carries the game's format, cardinal and degrees over the EPG index. Hold the buttons, or A and D like the game, with the pointer over the stage.

The active EPG sector of the ellipsoid body
FLY HEADING · EPG 04N · 090°
← AEPG COMPASSD →

Brain Quest

The Brain Quest from EyeWire II, carried with its panel, because the panel is where the sequence happens. Its toolbar icon is defined in toolbar-icons.ts as { id: 'quest', label: 'Brain Quest' } and currently sits in RETIRED_TOOLBAR_ICON_IDS, so the board is switched off in the live app. This is what it does when it runs: three neurons a day, each pip flipping from its number to a green check as its cell completes, the progress rail advancing behind them. Work through all three and the whole sequence fires at once, the way the game fires it: the celebration card arriving with its breathing gold border, twelve particles rising in three tints on quarter second staggers and a pulsing gold star, while the watcher in AchievementToast.vue raises the quest toast and the rainbow confetti at intensity two. The board breathes cyan on its own four second cycle throughout.

🧠 Brain Quest
Today's Quests

Usage

<link rel="stylesheet" href="hologram.css">

<nav class="holorail" data-holorail="h2"></nav>

<div class="holobar" data-steps="10" data-step="8"></div>

<section class="holoboot holosweep"> ... </section>

<figure class="holocard"><img src="render.jpg" alt=""></figure>

<figure data-hud="optional measured value">
  <div class="holoframe">
    <canvas class="trace"></canvas>
    <img src="render.jpg" alt="">
  </div>
</figure>

<script src="hologram.js"></script>
<script src="hologram-tap.js"></script>

Put the canvas.trace before the media. Everything decorative is created at runtime. The second script is what makes every hover treatment reachable by tap, and it belongs on any page that loads any part of this library. Read README.md for the reasoning, the tunables, and the compositing traps that cost real time.

Read the README

visual component only

Surface Treatment

Laid end to end, the myelinated wiring in one human brain runs about 176,000 km, enough to circle the equator four and a half times.

render pass, 4.5M triangles done
mesh cache, 56 partner cells

NO AUTH · NO FORM · NO REQUEST · NO STORAGE

◈ RESEARCHER PROFILE
Amy Sterling
@amy
Executive Director of EyeWire. #3 author on FlyWire. Mapping brains since 2012.
Today
0
⎈ 0⎇ 0
Past 7d
312
⎈ 191⎇ 121
All time
48,732
⎈ 29,800⎇ 18,932
Completed
892
proofread
Identified
210
typed only
Total
1,104
touched
Assists
96
helped
Recent Cells pinky_nf_v2
Segment Type When
86469_39570L2/3 Pyramidal138d
86469_05836PV+ Basket Cell139d
64851_39674pyramidal cell21d
64851_38687interneuron113d
64851_13584granule cell113d
86469_65390L2/3 Pyramidal138d
86469_04831L2/3 Pyramidal138d
126 edits to go
Glue badge
Glue
Mallet badge
Mallet
Awl badge
Awl
Hammer badge
Hammer
Chisel badge
Chisel
Wrench badge
Wrench
Screwdriver badge
Screwdriver
View all
25 cells to go
Map badge
Map
Compass badge
Compass
Cairn badge
Cairn
Reflecting Circle badge
Reflecting Circle
Astrolabe badge
Astrolabe
Sundial badge
Sundial
Telescope badge
Telescope
View all
Citizen Scientist badge
Citizen Scientist
Connectome badge
Connectome
View all
Favorite Badge
Citizen Scientist badge
Citizen Scientist
Three Cheers for the Heroes of Citizen Science!
Special Award · Won Mar 20, 2026
Edits
🥇×9
Cells
🥈×2
🔥7days current
Best31d
Last 14 Days
F
S
S
M
T
W
T
F
S
S
M
T
W
Today
Edits Completions