{"$schema":"https://ui.artbloom.tech/schema/registry-item.json","name":"ui.artbloom","homepage":"https://ui.artbloom.tech","items":[{"name":"text-shimmer","type":"registry:ui","title":"Text Shimmer","description":"A light band that sweeps across text, clipped to the glyphs themselves so it inherits weight and tracking.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/text-shimmer.json","docs":"https://ui.artbloom.tech/artbloom/animations/text-shimmer"},{"name":"number-ticker","type":"registry:ui","title":"Number Ticker","description":"Counts to a target when it scrolls into view. The spring writes straight to textContent, so React never re-renders mid-count.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/number-ticker.json","docs":"https://ui.artbloom.tech/artbloom/animations/number-ticker"},{"name":"marquee","type":"registry:ui","title":"Marquee","description":"Seamless infinite scroller, horizontal or vertical, with edge fades and pause-on-hover.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/marquee.json","docs":"https://ui.artbloom.tech/artbloom/animations/marquee"},{"name":"chip-pile","type":"registry:ui","title":"Chip Pile","description":"A tag list where every chip is a rigid body as wide as its own label, solved by sequential impulses with real friction. Drag one out and the pile answers.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/chip-pile.json","docs":"https://ui.artbloom.tech/artbloom/animations/chip-pile"},{"name":"liquid-nav","type":"registry:ui","title":"Liquid Nav","description":"A tab indicator that is fifteen masses on a spring chain, so it necks and catches up instead of easing. Drop-in for a real nav.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/liquid-nav.json","docs":"https://ui.artbloom.tech/artbloom/animations/liquid-nav"},{"name":"pull-cord","type":"registry:ui","title":"Pull Cord","description":"A switch you pull. Eighteen masses on inextensible links, and the click fires when the plunger runs out of travel — not when the angle looks right.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/pull-cord.json","docs":"https://ui.artbloom.tech/artbloom/animations/pull-cord"},{"name":"shadow-caster","type":"registry:ui","title":"Shadow Caster","description":"A feature grid lit by a source with real area, so every shadow has a penumbra that widens as it lengthens. The occluders are the live card rects.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/shadow-caster.json","docs":"https://ui.artbloom.tech/artbloom/animations/shadow-caster"},{"name":"slosh-gauge","type":"registry:ui","title":"Slosh Gauge","description":"A stat card whose liquid obeys the shallow-water equations, so it lands on the exact number with no easing and the wave crosses the tank at its own speed.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/slosh-gauge.json","docs":"https://ui.artbloom.tech/artbloom/animations/slosh-gauge"},{"name":"pressure-button","type":"registry:ui","title":"Pressure Button","description":"A button whose face is a pressure vessel. Holding it compresses the gas inside, the shell deforms under the real load, and letting go vents it — so the press has weight instead of a scale transform.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/pressure-button.json","docs":"https://ui.artbloom.tech/artbloom/animations/pressure-button"},{"name":"balance-progress","type":"registry:ui","title":"Cart-Pole Progress","description":"A progress bar with an inverted pendulum riding it. The controller drives away from the fall before it drives toward the target, so the bar leans into its own travel and settles with no easing curve.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/balance-progress.json","docs":"https://ui.artbloom.tech/artbloom/animations/balance-progress"},{"name":"heat-grid","type":"registry:ui","title":"Heat Grid","description":"A contribution calendar where activity is heat and the heat obeys the diffusion equation, so a busy week bleeds into the days beside it and cools back to ambient on its own.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/heat-grid.json","docs":"https://ui.artbloom.tech/artbloom/animations/heat-grid"},{"name":"flock-search","type":"registry:ui","title":"Flock Search","description":"An empty state that is not empty. Reynolds boids fill the space behind the message, split around the pointer as it passes and close back up behind it — separation, alignment and cohesion, no path to follow.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/flock-search.json","docs":"https://ui.artbloom.tech/artbloom/animations/flock-search"},{"name":"morphogen-wordmark","type":"registry:ui","title":"Morphogen Wordmark","description":"A hero background grown out of the wordmark itself. Two reagents react and diffuse from the glyphs as the seed, and the front feeds outward into stripes — every load braids differently because nothing is keyframed.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/morphogen-wordmark.json","docs":"https://ui.artbloom.tech/artbloom/animations/morphogen-wordmark"},{"name":"euler-disk-spinner","type":"registry:ui","title":"Euler Disk Spinner","description":"A loading state that spends energy instead of looping. The coin's tilt carries the remaining work and its rattle rises as the disk lies down, the way a real Euler disk finishes — audibly close before it stops.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/euler-disk-spinner.json","docs":"https://ui.artbloom.tech/artbloom/animations/euler-disk-spinner"},{"name":"aurora-thread-loom","type":"registry:ui","title":"Aurora Thread Loom","description":"Forty-eight gradient threads waving out of phase and hue-rotating as they cross. One keyframe, indexed per thread by a custom property.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/aurora-thread-loom.json","docs":"https://ui.artbloom.tech/artbloom/animations/aurora-thread-loom"},{"name":"bubble-burst","type":"registry:ui","title":"Bubble Burst","description":"Four bubbles rise, pop, and spray eight drops each on a shared clock. A liquid loader with no JS timer.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/bubble-burst.json","docs":"https://ui.artbloom.tech/artbloom/animations/bubble-burst"},{"name":"curtain-sequence","type":"registry:ui","title":"Curtain Sequence","description":"Six coloured panels sweep in, hinge from the far edge, and leave — the title resolves mid-pass. Press to run.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/curtain-sequence.json","docs":"https://ui.artbloom.tech/artbloom/animations/curtain-sequence"},{"name":"destructible-membrane","type":"registry:ui","title":"Destructible Membrane","description":"A canvas sheet you tear with the pointer. Springs hold the cloth, the rupture propagates to neighbouring cells, and the noise buffer is rebuilt on resize.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/destructible-membrane.json","docs":"https://ui.artbloom.tech/artbloom/animations/destructible-membrane"},{"name":"domino-word","type":"registry:ui","title":"Domino Word","description":"Letter tiles fall into each other in sequence, each with a cast side and a real ground shadow. Any word, one tile per letter.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/domino-word.json","docs":"https://ui.artbloom.tech/artbloom/animations/domino-word"},{"name":"kinetic-kerning","type":"registry:ui","title":"Kinetic Kerning","description":"Letters slide out of true and settle back into precise spacing, one after another, with the caption arriving last.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/kinetic-kerning.json","docs":"https://ui.artbloom.tech/artbloom/animations/kinetic-kerning"},{"name":"kinetic-texture-mesh","type":"registry:ui","title":"Kinetic Texture Mesh","description":"Drag to pluck a grid of textured cells and release a wave through the mesh. Canvas, pointer capture, one animation frame loop.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/kinetic-texture-mesh.json","docs":"https://ui.artbloom.tech/artbloom/animations/kinetic-texture-mesh"},{"name":"lenticular-shift","type":"registry:ui","title":"Lenticular Shift","description":"Eighteen slats turn in place so two words trade positions, the way a lenticular print changes with the angle you hold it at.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/lenticular-shift.json","docs":"https://ui.artbloom.tech/artbloom/animations/lenticular-shift"},{"name":"mercury-droplet-choir","type":"registry:ui","title":"Mercury Droplet Choir","description":"Twenty-five chrome droplets breathe in and out of formation, deforming as they travel. Offsets are computed per cell from the centre of the grid.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/mercury-droplet-choir.json","docs":"https://ui.artbloom.tech/artbloom/animations/mercury-droplet-choir"},{"name":"pulse-choir","type":"registry:ui","title":"Pulse Choir","description":"Thirty-two bars on one clock, each with a fixed peak, so the field reads as a single waveform rather than thirty-two loaders.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/pulse-choir.json","docs":"https://ui.artbloom.tech/artbloom/animations/pulse-choir"},{"name":"rollback-orbit","type":"registry:ui","title":"Rollback Orbit","description":"A weighted ball rolls to its target and back, rocking the rail it runs on and settling the shadow underneath. Press to roll.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/rollback-orbit.json","docs":"https://ui.artbloom.tech/artbloom/animations/rollback-orbit"},{"name":"split-shutter","type":"registry:ui","title":"Split Shutter","description":"Nine shutters part to reveal a word, each slat carrying its own printed label so the mechanism stays visible.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/split-shutter.json","docs":"https://ui.artbloom.tech/artbloom/animations/split-shutter"},{"name":"snap-toggle","type":"registry:ui","title":"Snap Toggle","description":"A settings toggle whose off and on are two real resting positions of a buckled arch. Drag the knob to the middle and let go: it hangs for a third of a second and then commits on its own, and which way it goes is settled by a fraction of a pixel rather than by a threshold.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/snap-toggle.json","docs":"https://ui.artbloom.tech/artbloom/animations/snap-toggle"},{"name":"toast-stack","type":"registry:ui","title":"Toast Stack","description":"A notification stack where every card lands on the air trapped underneath it. The squeeze is algebraic rather than exponential, so half the settle is spent in the last pixel and a half — and dismissing one from the middle ripples up at each card's own rate, with no stagger written anywhere.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/toast-stack.json","docs":"https://ui.artbloom.tech/artbloom/animations/toast-stack"},{"name":"detent-slider","type":"registry:ui","title":"Detent Slider","description":"A stepped slider with a real detent instead of a rounding function. The notches cost something to climb out of, so a slow drag settles into the nearest one and a flick clears three — out of one equation rather than a velocity threshold.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/detent-slider.json","docs":"https://ui.artbloom.tech/artbloom/animations/detent-slider"},{"name":"sheet-fold","type":"registry:ui","title":"Sheet Fold","description":"A settings accordion whose panels are plates on a soft-close hinge. The damper is quadratic, so a leaf holds a steady rate through half its travel and then chokes on the last pixel and a half, and a long row and a short one sweep at different speeds without either being configured.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/sheet-fold.json","docs":"https://ui.artbloom.tech/artbloom/animations/sheet-fold"},{"name":"shutter-compare","type":"registry:ui","title":"Shutter Compare","description":"A before/after slider whose divider is a focal-plane shutter. The second curtain is latched one exposure time after the first rather than pinned to it, so past the sync speed the reveal arrives as a travelling band instead of an edge.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/shutter-compare.json","docs":"https://ui.artbloom.tech/artbloom/animations/shutter-compare"},{"name":"dock-magnify","type":"registry:ui","title":"Dock Magnify","description":"An app dock on a shelf that actually bends. The bump under the pointer is a solved deflection rather than a curve over distance, so the icons two slots out dip below the resting line and the ones at either end lift less than the ones in the middle — neither of which a falloff function can do.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/dock-magnify.json","docs":"https://ui.artbloom.tech/artbloom/animations/dock-magnify"},{"name":"galton-histogram","type":"registry:ui","title":"Galton Histogram","description":"A ratings breakdown whose five bars are a tally of stars that have actually been cast, one falling ball at a time. The bars wobble, and the wobble shrinks as the sample grows — so switching from every review to the last few hundred makes the same product go visibly noisy.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/galton-histogram.json","docs":"https://ui.artbloom.tech/artbloom/animations/galton-histogram"},{"name":"relaxation-typing","type":"registry:ui","title":"Relaxation Typing","description":"A typing indicator whose three dots are coupled to each other rather than delayed behind each other. Drag it toward a faster typist and the ripple tightens into a near-simultaneous blink instead of merely running quicker, which a keyframe stagger cannot do at any duration.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/relaxation-typing.json","docs":"https://ui.artbloom.tech/artbloom/animations/relaxation-typing"},{"name":"lloyd-avatars","type":"registry:ui","title":"Lloyd Avatars","description":"A reviewer facepile in which every face owns the part of the frame nearest to it. Overlap is impossible rather than prevented, so nothing has to be re-tuned per head count — drag one face into a corner and its share collapses while the rest swell to take it up.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/lloyd-avatars.json","docs":"https://ui.artbloom.tech/artbloom/animations/lloyd-avatars"},{"name":"kelvin-ramp","type":"registry:ui","title":"Kelvin Ramp","description":"A theme-warmth control whose strip is a real black-body locus — Planck's law through the CIE 1931 observer, then the sRGB transfer curve, solved a column at a time. A thousand kelvin at the warm end is five times the colour change it is at the cool end, so the same drag does different work at either end of the same strip, which a gradient between two stops cannot do at any number of stops.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/kelvin-ramp.json","docs":"https://ui.artbloom.tech/artbloom/animations/kelvin-ramp"},{"name":"scanline-marquee","type":"registry:ui","title":"Scanline Marquee","description":"A trusted-by belt read one scanline at a time, and read against the strip's own velocity history rather than its current speed. Flick it and hold still: the travel has stopped and the type is still unbending from the top of the window down, because every band on screen was exposed at a different moment.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/scanline-marquee.json","docs":"https://ui.artbloom.tech/artbloom/animations/scanline-marquee"},{"name":"photon-thumbnail","type":"registry:ui","title":"Photon Thumbnail","description":"A media card whose thumbnail arrives as photons land on it: Poisson counts over an analytically ray-traced scene, so the estimator's error falls as the square root of exposure and nothing here is a bitmap. The shadows are still boiling long after the highlights have gone clean — the one thing a grain overlay fading to zero cannot reproduce, because its noise is uniform across the frame.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/photon-thumbnail.json","docs":"https://ui.artbloom.tech/artbloom/animations/photon-thumbnail"},{"name":"frost-spoiler","type":"registry:ui","title":"Frost Spoiler","description":"An embargoed price behind ice that was actually grown — a diffusion-limited cluster, aggregated one walker at a time. Sweeping the glass sublimates the patch under the hand and leaves the rest of the pane standing, and no two panels are frosted alike, because there is no texture anywhere in it to repeat.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/frost-spoiler.json","docs":"https://ui.artbloom.tech/artbloom/animations/frost-spoiler"},{"name":"wetting-reveal","type":"registry:ui","title":"Wetting Reveal","description":"A gallery plate revealed by a liquid film with a real contact angle. The front is driven by its own curvature and pins on defects in the glass, so a drop rounds itself off, stalls at an edge, and merges with its neighbours into one sheet — and the wetted picture carries the tonality the dry haze was flattening.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/wetting-reveal.json","docs":"https://ui.artbloom.tech/artbloom/animations/wetting-reveal"},{"name":"moire-scratch","type":"registry:ui","title":"Moire Scratch","description":"A promo code under two printed gratings, revealed by the beat between them rather than by an eraser mask. Both films are box-filtered at exactly one pitch, so the carriers integrate away and only the beat survives — and the gain is the beat over the pitch: eleven pixels of hand sweeps the bright band clear across the panel.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/moire-scratch.json","docs":"https://ui.artbloom.tech/artbloom/animations/moire-scratch"},{"name":"ripple-tank","type":"registry:ui","title":"Ripple Tank","description":"A shallow-water surface solved on a grid: drips fall on a clock, their rings interfere, and the wake reflects off the walls of the tank instead of fading out. Click to drop your own.","kind":"animations","author":"@artbloom","url":"https://ui.artbloom.tech/r/ripple-tank.json","docs":"https://ui.artbloom.tech/artbloom/animations/ripple-tank"},{"name":"command-palette","type":"registry:ui","title":"Command Palette","description":"A ⌘K command menu with fuzzy search, grouped results, full keyboard navigation and a recent-commands memory. One file, keyboard-first, accessible.","kind":"components","author":"@artbloom","url":"https://ui.artbloom.tech/r/command-palette.json","docs":"https://ui.artbloom.tech/artbloom/components/command-palette"},{"name":"segmented-control","type":"registry:ui","title":"Segmented Control","description":"An iOS-style segmented control with a sliding indicator that tracks the active segment, full keyboard support and roving focus. One file, no dependencies.","kind":"components","author":"@artbloom","url":"https://ui.artbloom.tech/r/segmented-control.json","docs":"https://ui.artbloom.tech/artbloom/components/segmented-control"},{"name":"combobox","type":"registry:ui","title":"Combobox","description":"An autocomplete combobox with filtering, keyboard navigation and an ARIA listbox. Self-contained — its own class-merge helper, no external dependencies.","kind":"components","author":"@artbloom","url":"https://ui.artbloom.tech/r/combobox.json","docs":"https://ui.artbloom.tech/artbloom/components/combobox"},{"name":"date-range-picker","type":"registry:ui","title":"Date Range Picker","description":"A two-month calendar for picking a start and end date, with hover previews across the range, keyboard navigation and month paging. One file.","kind":"components","author":"@artbloom","url":"https://ui.artbloom.tech/r/date-range-picker.json","docs":"https://ui.artbloom.tech/artbloom/components/date-range-picker"},{"name":"file-dropzone","type":"registry:ui","title":"File Dropzone","description":"A drag-and-drop upload zone with a real drag state, file-type and size validation, per-file progress and previews. Self-contained, keyboard-accessible.","kind":"components","author":"@artbloom","url":"https://ui.artbloom.tech/r/file-dropzone.json","docs":"https://ui.artbloom.tech/artbloom/components/file-dropzone"},{"name":"cinematic-supercar","type":"registry:page","title":"Cinematic Supercar","description":"A scroll-driven WebGL product story — assembly, ignition, road, braking, showroom — with a real 12MB car model, V12 audio, and film grain. Ships every byte it needs.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/cinematic-supercar.json","docs":"https://ui.artbloom.tech/artbloom/templates/cinematic-supercar"},{"name":"paper-portfolio","type":"registry:page","title":"Paper Portfolio","description":"A seven-page torn-paper portfolio: hero collage, case studies, a printable capabilities page and a draggable sketchbook. Ships the six original PNGs — the hero collage and five logo marks — with the rest of the artwork drawn in SVG.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/paper-portfolio.json","docs":"https://ui.artbloom.tech/artbloom/templates/paper-portfolio"},{"name":"monolith-launch","type":"registry:page","title":"Monolith Launch","description":"A four-page product launch site built entirely from type — no images, no icons, no fonts to fetch and nothing to license. Display headline, a looping spec strip, four claims each backed by a number, the full specification table and a reservation form that admits it has no backend.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/monolith-launch.json","docs":"https://ui.artbloom.tech/artbloom/templates/monolith-launch"},{"name":"daylight","type":"registry:page","title":"Daylight","description":"A calm, light one-page engineer portfolio: an airy hero, a quick-facts strip, an about section with a workspace photo, grouped skills, selected work, an experience timeline and a contact close. Every word lives in one content file, and the headshot ships background-free so it sits on any page colour.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/daylight.json","docs":"https://ui.artbloom.tech/artbloom/templates/daylight"},{"name":"graphite","type":"registry:page","title":"Graphite","description":"A graphite-and-cream sketchbook portfolio for a design engineer: hand-drawn underlines and margin notes, an editorial about, a pinned selected-work grid and a pencil self-portrait. Every string on the site lives in one content file — swap the palette and the words and it is someone else's.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/graphite.json","docs":"https://ui.artbloom.tech/artbloom/templates/graphite"},{"name":"street-code","type":"registry:page","title":"Street Code","description":"A loud, brutalist one-page developer portfolio: hard black edges, hand-drawn scribbles, a scrolling slogan marquee and a background-free portrait against the dark. Every word lives in one content file; swap the palette and the copy and it is someone else's site.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/street-code.json","docs":"https://ui.artbloom.tech/artbloom/templates/street-code"},{"name":"umbra","type":"registry:page","title":"Umbra","description":"An immersive experience-studio site on one persistent cursor-reactive canvas — flow-field particles that push, swirl and knit into a constellation — opening with a 0→100 preloader and lag-follow cursor, scroll scrubbing the field's density and hue through chapters. No image assets; settles to a static frame under reduced-motion.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/umbra.json","docs":"https://ui.artbloom.tech/artbloom/templates/umbra"},{"name":"slate","type":"registry:page","title":"Slate","description":"A dark, product-led SaaS showcase whose hero is a live DOM-built app surface — a self-moving cursor and an autonomous agent walking an issue through its statuses in real time — backed by scroll-linked kanban, roadmap and diff captures. No image assets; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/slate.json","docs":"https://ui.artbloom.tech/artbloom/templates/slate"},{"name":"solstice","type":"registry:page","title":"Solstice","description":"A cinematic desert-resort stay: a video hero (with a Ken-Burns still fallback) behind a persistent booking bar, parallax room reveals, two-image hover-swap suite cards and an editorial sense-of-place narrative. Ships a looping hero video, seven art-directed property renders; motion respects reduced-motion.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/solstice.json","docs":"https://ui.artbloom.tech/artbloom/templates/solstice"},{"name":"momentum","type":"registry:page","title":"Momentum","description":"A light-mode scheduling-SaaS conversion stack: a live DOM booking widget that loops through date, slots and confirmation, a monthly/annual pricing toggle that rolls the prices, count-up case-study stats and parallax-lagged feature mocks. No image assets; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/momentum.json","docs":"https://ui.artbloom.tech/artbloom/templates/momentum"},{"name":"sprig","type":"registry:page","title":"Sprig","description":"A DTC sparkling-botanical beverage storefront: a video hero, a rotating promo bar, flavour tabs that cross-fade the can and recolour the section accent, a bestseller row with a fly-to-cart animation and a slide-in cart with a free-shipping progress bar. Ships a looping hero video, seven product renders; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/sprig.json","docs":"https://ui.artbloom.tech/artbloom/templates/sprig"},{"name":"riot","type":"registry:page","title":"RIOT","description":"A type-first kinetic manifesto for a design festival where Geist's weight axis is the instrument: a per-character load reveal and weight-on-hover headline, marquee ribbons whose speed and skew couple to scroll velocity, scroll-reactive programme rows and a pausable testimonial carousel. A two-colour riso-poster palette; no image assets; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/riot.json","docs":"https://ui.artbloom.tech/artbloom/templates/riot"},{"name":"flux","type":"registry:page","title":"Flux","description":"A generative-AI creative showcase where the output is the hero: a full-bleed autoplaying render reel, a hover-to-scrub output gallery, prompt-to-result pairs and a style-explorer. Ships six art-directed generative stills; motion respects reduced-motion.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/flux.json","docs":"https://ui.artbloom.tech/artbloom/templates/flux"},{"name":"assembly","type":"registry:page","title":"Assembly","description":"A dated design-and-tech conference site: a poster-grade hero with a live countdown and persistent register CTA, a billed speaker grid, a scroll-scrubbed multi-track agenda and ticket-tier cards. Ships six art-directed poster and speaker renders; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/assembly.json","docs":"https://ui.artbloom.tech/artbloom/templates/assembly"},{"name":"endpoint","type":"registry:page","title":"Endpoint","description":"A developer API-first code hero: a syntax-highlighted request block, an SDK tab switcher (Node/Python/Ruby/curl) that height-animates between snippets, a streaming JSON response terminal, a copy-to-checkmark morph and count-up reliability stats. No image assets; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/endpoint.json","docs":"https://ui.artbloom.tech/artbloom/templates/endpoint"},{"name":"folio","type":"registry:page","title":"Folio","description":"A culture-magazine grid: a large cover-story hero, a uniform category-tagged card grid where covers scale under a darkening overlay as a kicker slides up, an editor's-picks strip and an inline newsletter promo. Ships six art-directed editorial covers; reduced-motion respected.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/folio.json","docs":"https://ui.artbloom.tech/artbloom/templates/folio"},{"name":"afterglow","type":"registry:page","title":"Afterglow","description":"A prom-night invitation on a scroll-scrubbed film: a single 30s take runs dusk to a confetti finale as full-screen beats fade through the frame, then the film releases and loops at the bottom while a silver bloom crests on the RSVP. Below the fold, a midnight-and-moonlight invitation — a gold-threaded timeline of the evening, tickets and details. Ships the hero film and five graded stills; reduced-motion gets a static fallback.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/afterglow.json","docs":"https://ui.artbloom.tech/artbloom/templates/afterglow"},{"name":"sillage","type":"registry:page","title":"Sillage","description":"A night-blooming fragrance house on a scroll-scrubbed film: a 30s take held cool and dark reads as a night garden, its beats — bergamot, night jasmine, oud — fading through the frame, with one silver-jade bloom swelling behind the type as jasmine opens at centre. Below the film, a real house: the composition read plainly, the bottle, where the jasmine is grown, the rest of the collection. Ships the hero film and six graded stills; reduced-motion gets a static fallback.","kind":"templates","author":"@artbloom","url":"https://ui.artbloom.tech/r/sillage.json","docs":"https://ui.artbloom.tech/artbloom/templates/sillage"},{"name":"pricing-tiers","type":"registry:block","title":"Pricing Tiers","description":"Three-column pricing with a highlighted Pro plan, per-plan feature lists and a checkmark for each line. One file, no dependencies.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/pricing-tiers.json","docs":"https://ui.artbloom.tech/artbloom/blocks/pricing-tiers"},{"name":"testimonials","type":"registry:block","title":"Testimonials","description":"A responsive grid of quote cards with star ratings and initials avatars. Server component, no images, no dependencies.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/testimonials.json","docs":"https://ui.artbloom.tech/artbloom/blocks/testimonials"},{"name":"cta-banner","type":"registry:block","title":"CTA Banner","description":"A gradient call-to-action panel with a headline, subcopy and two buttons over soft blurred glows. Static markup, one file.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/cta-banner.json","docs":"https://ui.artbloom.tech/artbloom/blocks/cta-banner"},{"name":"faq","type":"registry:block","title":"FAQ Accordion","description":"An accessible FAQ built on native details/summary — expands with zero JavaScript, keyboard-operable, one item open by default.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/faq.json","docs":"https://ui.artbloom.tech/artbloom/blocks/faq"},{"name":"logo-cloud","type":"registry:block","title":"Logo Cloud","description":"A row of customer wordmarks drawn as inline SVG, so the block ships with no image assets. Responsive from two columns to six.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/logo-cloud.json","docs":"https://ui.artbloom.tech/artbloom/blocks/logo-cloud"},{"name":"team-grid","type":"registry:block","title":"Team Grid","description":"A team section with initials avatars, names, roles and short bios in a four-up responsive grid. Server component, no images.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/team-grid.json","docs":"https://ui.artbloom.tech/artbloom/blocks/team-grid"},{"name":"contact-form","type":"registry:block","title":"Contact Form","description":"A two-column contact section: labelled, accessible form fields beside contact details with inline SVG icons. One file, no deps.","kind":"blocks","author":"@artbloom","url":"https://ui.artbloom.tech/r/contact-form.json","docs":"https://ui.artbloom.tech/artbloom/blocks/contact-form"}]}