Hero
HeroBlock and its five variants at the foot.Honeycomb Hero
primary, as do the rule, the arrows and the call-to-action hexagon, whose compass and label take primary-foreground. They read the theme wherever the section sits, so switching themes repaints them.Wander the fjords
Copy on the left, the honeycomb on the right with the primary hexagon set among the photographs. Wait four seconds or use the arrows at the foot: every hexagon moves one step along the ring, and the whole section eases to the new photograph's colour. Pick a colour above to repaint the accent.
images- are the photographs in queue order; the first is featured at the start. Nine cells are visible — fewer photographs are repeated around the ring, more simply wait their turn. Give each a deep
toneand the background tint, the fade towards the copy and the gaps between hexagons all ease to it while that photograph is featured. interval4000- is the gap between steps in milliseconds. It pauses while the tab is hidden and while the section is off screen;
0turns autoplay off and leaves the arrows. primaryActionLabel- fills the call-to-action hexagon; a
\nin the string breaks the line, as in Plan / your trip. A compass sits above it; on hover it turns and the hairline hexagon inside the cell swells, and on keyboard focus the hairline goes solid. accent- sets
--primaryfor the section: the letters of the word that cross the photographs, the rule, the arrows and the call to action, with its label inprimary-foreground. Leave it out to follow your theme's primary.backgroundis the tone for photographs without one: a deep shade of the primary by default.
Installation
New project? Follow the installation guide to set up Tailwind CSS, shadcn, the cn helper and lucide-react, register the @algorize-ui registry once, then copy your styles from the Themes page.
Install Honeycomb Hero
components/ is written into your project. Copy any snippet from a Usage tab above and it runs.
Install dependencies
Nothing beyond the shared setup — Honeycomb Hero needs only the cn helper and lucide-react, which the installation guide already put in place.
Features
A honeycomb that turns
The nine cells sit on a real hexagonal lattice, and the queue snakes around it so every step is a hop between neighbours. Each cell glides to its next place with a short stagger — the one heading for the feature spot leads, the one leaving it follows last.
The feature is the background
Whatever photograph is in the large hexagon also fills the section behind everything, tinted with its own tone and darkened towards the copy. Photograph and colour crossfade together as the honeycomb turns — deep green behind the gorge, indigo behind the cabins, night blue behind the snow.
Measured, not guessed
Every hexagon's position comes from the design in percentages of a fixed-aspect stage, so the composition is the same at 1024 and 1920 — including the cells cut by the right edge and the foot. Below the desktop breakpoint the honeycomb stacks under the copy.
Operable
Arrows at the foot and the keyboard's arrow keys step the queue either way; a live region names the featured photograph; under prefers-reduced-motion the cells swap places without travelling.
Props Reference
| Prop | Type | Default | Description |
|---|---|---|---|
title, titleAccent | string | "Wander the", "Fjords" | The light line and the huge accent word. |
titleOverlapColor | string | theme primary | The letters of the accent word that cross the photographs. |
subtitle | string | — | The paragraph under the headline. |
primaryActionLabel, primaryActionHref | string | "Plan\nyour trip", "#" | The call-to-action hexagon, in primary with a compass above the label; \n breaks the line. |
images | { src: string; alt: string; tone?: string }[] | nine Lofoten photographs, each with a tone | The queue, first featured. tone is the colour behind everything while that photograph is featured; keep it deep, the copy is white. |
socialLinks | { label: string; href: string }[] | four networks, all # | The links along the foot; [] hides them. |
interval | number | 4000 | Milliseconds between steps; 0 turns autoplay off. |
onChange | (index: number) => void | — | Called with the index of the photograph that just became the feature. |
accent | string | theme primary | Sets --primary for the section: the word, the rule, the arrows and the call to action. |
background | string | a deep shade of the primary | The tone for photographs without their own. |
linkComponent | ElementType | "a" | What renders every link; pass next/link in Next.js. |
Hero Carousel
HeroCarousel composes the library: the faces are an AvatarStack. The colours come from the photographs; the theme's --primary (pin it with accent) is used for the eyebrow pip, the arrow on the call to action, the progress line and the focus rings.Watch the dawn from the summit
Eyebrow and headline across the top; the glass panel and the queue of cards along the foot. The queue moves every five seconds — click any card to bring it forward, use the arrow keys, or swipe on a phone. Hovering the rail holds the clock.
slides- are shown in order: the front card is the current slide, the rest queue up behind it. Each carries its
image(full-bleed and in its card), atitleanddescriptionfor the caption, an optionalheadingthat replaces the section headline while it is in front, and apositionfor the crop. interval5000- is the gap between slides in milliseconds. It pauses while the pointer or keyboard focus is on the rail, while the tab is hidden and while the section is off screen;
0turns autoplay off and hides the progress line. avatars- and
avatarsLabelfill the top of the glass panel;introis the paragraph andctathe pill. Passnext/linkaslinkComponentto keep client-side navigation. reveal"in-view"- (the default) plays the entrance the first time the section is seen; the docs pass
"immediate". Under prefers-reduced-motion the entrance is skipped and slides swap without the crossfade or drift.
Installation
Install Hero Carousel
components/ is written into your project. Copy any snippet from a Usage tab above and it runs.
Install dependencies
Step 1 installs these for you. Run them yourself only if you are adding Hero Carousel to an existing project by hand. The cn helper and lucide-react are not listed — the installation guide covers them once for every component. @radix-ui/react-avatar and motion come in with the components above rather than from Hero Carousel directly.
animated-typography and avatar-stack are components, not packages — the shadcn CLI installs them as source files.
@radix-ui/react-avatar and motion are npm packages.
Height
Features
A queue, not a slider
Cards glide between their places in the queue; the one sent to the back appears where it belongs instead of flying across the others. The background crossfades, settles and then drifts slowly until the next slide.
The clock is the progress line
One CSS animation fills the line under the front card and moves the queue when it completes. Pausing the line pauses the clock, so a hover never throws away the time already spent.
Every device
The rail measures itself and picks card sizes from its own width, not the viewport. Desktop puts the panel beside the rail; tablets stack them; phones give the front card most of the row and keep the rest of the queue peeking in.
Operable and readable
Every card is a button with a visible focus ring; arrow keys walk the queue, a swipe moves it on touch, and a live region announces the slide. Reduced motion swaps slides without the crossfade or drift.
Props Reference
| Prop | Type | Default | Description |
|---|---|---|---|
slides | { image: string; alt: string; title: string; description?: string; heading?: ReactNode; position?: string }[] | — | The slides, in queue order. |
eyebrow | string | — | The pill above the headline. |
heading | ReactNode | — | The headline, used whenever the front slide has none of its own. |
intro | string | — | The paragraph in the glass panel. |
avatars, avatarsLabel | { src: string; alt?: string }[], string | — | The faces at the top of the panel and the words beside them. |
cta | { label: string; href: string } | — | The pill at the foot of the panel. |
interval | number | 5000 | Milliseconds between slides; 0 turns autoplay off. |
defaultIndex | number | 0 | The slide in front at first. |
onChange | (index: number) => void | — | Called with the index of the slide that just came to the front. |
accent | string | theme primary | Sets --primary for the section. |
reveal | "in-view" | "immediate" | "in-view" | When the entrance plays. |
linkComponent | ElementType | "a" | What renders the CTA; pass next/link in Next.js. |
Fashion Hero
FashionHero is built from library pieces: the badge is Circular Text, the faces are Avatar Stack, the headline is Text Animation (blur-in-up, word by word), every look is a Tilted Card, and the badge opens a Dialog. When it first scrolls into view the badge and faces settle in, the looks rise from the middle column outward, the button lands on its look and the footer follows — one reveal, then only the badge keeps turning and the pointer does the rest.Daring designs
Five columns stepping down to the middle at desktop, three on tablets, two on phones with the middle look full width. Hover a look to tilt it; reload the preview to watch the reveal again.
looks- are up to seven
{ src, alt, tone }, laid out left to right: a tall and a small, a tall, the tall that carries the button, a tall, a tall and a small.toneis the flat colour behind the person. blend- multiplies the photo onto its tone (on by default), so a plain white studio background takes the colour. Turn it off for a shot that already has a coloured background.
video- is the phrase on the turning badge and the embed it opens in a Dialog. Leave it out and the badge's space stays empty so the headline keeps its place.
teaser- is the next story — a number, a category and a title — as one link; the arrow fills and the title underlines on hover.
reveal"in-view"- (the default) plays the sequence the first time the section enters the viewport; the docs pass
"immediate". Under prefers-reduced-motion everything renders finished and the badge holds still.
Installation
Install Fashion Hero
components/ is written into your project. Copy any snippet from a Usage tab above and it runs.
Install dependencies
Step 1 installs these for you. Run them yourself only if you are adding Fashion Hero to an existing project by hand. The cn helper and lucide-react are not listed — the installation guide covers them once for every component. @radix-ui/react-avatar and motion come in with the components above rather than from Fashion Hero directly.
avatar-stack, circular-text, dialog, text-animation and tilted-card are components, not packages — the shadcn CLI installs them as source files.
@radix-ui/react-avatar and motion are npm packages.
Photos on colour
blend on, the photo is drawn with mix-blend-mode: multiply over its tone, so white becomes the tone and the person keeps their colours — and the effect is strongest with lighter tones and darker clothes. A shot that already has a coloured background is better left unblended: pass blend: false and pick a tone that matches its edges.Features
Built from the library
Circular Text for the badge, Avatar Stack for the faces, Text Animation for the headline, Tilted Card for every look, Dialog for the video. Install this one item and all five come with it.
One reveal, then the pointer
A single timeline plays on first view: badge and faces, looks from the middle outward, the button, the footer. After that only the badge turns; tilt, zoom, fan-out and arrows all answer the pointer.
Responsive to two columns
Five staggered columns at lg, three at sm, two on phones with the middle look — and its button — full width. The header folds the badge and faces above the headline.
Links are links
The call to action, the plus beside the faces and the teaser are anchors — pass your router's Link as linkComponent — and the video badge is a real button with a label for screen readers.
Props Reference
| Prop | Type | Default | Description |
|---|---|---|---|
heading | string | Required | The headline, revealed word by word. |
looks | Look[] | Required | Up to seven { src, alt, tone, blend?, position? }, in slot order. |
video | { badge: string; url: string; title?: string } | — | Words on the turning badge and the embed it opens. |
avatars, avatarsHref, avatarsLabel | { src, alt? }[], string, string | —, —, "Become a member" | Faces in the top-right stack; the href adds a "+" link after them with that label. |
cta | { label: string; href: string } | — | The pill sitting on the middle look. |
quote | { text: string; author: string } | — | A customer's words and their name, set in the serif italic with a highlighter stroke. |
teaser | { index, label, title, href } | — | The next story, as one link. |
accent | string | theme primary | Sets --primary for the section: the highlighter stroke, focus rings and the mark above the middle look. |
reveal | "in-view" | "immediate" | "in-view" | When the sequence plays. |
linkComponent | ElementType | "a" | Your router's link for every href. |
Support Hero
SupportHero is built from library pieces. The ground and the cards are Glass Panel (GlassBackdrop with a grey aurora, GlassPanel tiles), the headline is Text Animation's blur-in-up, the figures are Counter's animated type in its new bare form, and the call to action is Button. Every card is a named part — Integrations, Stat, Photo, Team — plus a plain Card for anything else.Headline, call to action, six cards
Twelve columns at desktop — 3 / 3 / 3 / 3 on the first row with the portrait spanning both rows, 3 / 6 on the second. Six columns at tablet, one on phones. Hover the cards.
heading- is set by
TextAnimationinblur-in-up: each word rises out of a blur the first time the section is on screen.subtitleand thectabutton fade in behind it. Stat- counts up with
CounterBlock—value,decimals,prefix,suffix— starting when the card is on screen.tone="accent"is the card in the theme's primary colour. Give it animageand the picture fills the card, with only the bottom-left corner under the figure washed in the card colour — the rest shows through, so pick a picture whose subject sits up and to the right. Photo- fills its card with a portrait;
positionsets the crop anchor,labela word in the corner. Addlg:row-span-2 lg:h-autoto make one tall. Team- scatters up to six
avatarsover the right half of the card, above a field of dots. They pop in after the cards and drift outward on hover. reveal"in-view"- (the default) plays everything the first time the section enters the viewport; the docs pass
"immediate". Under prefers-reduced-motion the section renders finished.
Installation
Install Support Hero
components/ is written into your project. Copy any snippet from a Usage tab above and it runs.
Install dependencies
Step 1 installs these for you. Run them yourself only if you are adding Support Hero to an existing project by hand. The cn helper and lucide-react are not listed — the installation guide covers them once for every component.
button, counter, glass-panel and text-animation are components, not packages — the shadcn CLI installs them as source files.
Layout
GlassBackdrop grid — one column on phones, six at md, twelve at lg — and every part carries a default span (Integrations, Stat and Photo take three columns, Team takes six). Cards are a fixed 13rem tall at lg, so a part given lg:row-span-2 lg:h-auto is exactly two cards tall. Pass any other span through className; the built-in parts are GlassPanels, so variant="solid" on a card also works.Button. Give cta an onClick, or an href to navigate to on click — pass a router push in onClick when you want client-side navigation.Features
Built from the library
Glass Panel for the ground and the cards, Text Animation for the headline, Counter for the figures, Button for the call to action. Install this one item and all four come with it.
One sequence, then the pointer
Words, line, button, cards, faces — one timeline the first time the section appears. After that nothing moves unless you hover it. Reduced motion renders the finished state.
Figures that count when seen
Each Stat waits until its card is on screen before counting, so a hero below the fold does not run its numbers while nobody is looking.
Server-safe
Cards and faces render opaque in the HTML and only animate once the page is live; nothing depends on JavaScript to be visible.
Props Reference
SupportHero
| Prop | Type | Default | Description |
|---|---|---|---|
heading | string | — | The headline, animated word by word. |
subtitle | ReactNode | — | The line under it. |
cta | { label: string; href?: string; onClick?: () => void } | — | The button. href is navigated to on click. |
aurora | [string, string, string] | three greys | Colours washed behind the glass. |
reveal | "in-view" | "immediate" | "in-view" | When the sequence plays. |
children | ReactNode | — | The cards, in the order they should fill the grid. |
SupportHero.Integrations
| Prop | Type | Description |
|---|---|---|
icons | ReactNode[] | Marks shown on white tiles, e.g. from the icons item. |
title, text | string | Heading and the line under it. |
SupportHero.Stat
| Prop | Type | Default | Description |
|---|---|---|---|
value | number | — | The figure counted up to. |
decimals | number | 0 | Decimal places, e.g. 1 for 5.5. |
prefix, suffix | string | — | Text either side of the figure, e.g. "%", "B". |
caption | string | — | What the figure means. |
tone | "glass" | "accent" | "glass" | Frosted, or the accent card in the theme's primary colour with its foreground for text. |
image, imageAlt | string | — | A picture behind the whole card. Only the bottom-left corner, under the figure, is washed with the card colour; the rest stays clear. Zooms a touch on hover. |
imagePosition | string | "center" | CSS object-position for the crop — e.g. "70% center" to favour a subject on the right. |
SupportHero.Photo
| Prop | Type | Default | Description |
|---|---|---|---|
src, alt | string | — | The portrait. |
label | string | — | A word in the top-left corner. |
position | string | "center" | CSS object-position for the crop. |
SupportHero.Team
| Prop | Type | Description |
|---|---|---|
title | ReactNode | The heading; use <br /> for deliberate breaks. |
avatars | { src: string; alt?: string }[] | Up to six faces, scattered over the right half. |
SupportHero.Card
GlassPanel that takes part in the reveal: shape="tile", interactive, three columns wide and 13rem tall at lg. All GlassPanel props apply.Collage Hero
CollageHero is built from library pieces: the scroll pill is Button, the video opens in a Dialog. The colours come from the theme — the accent is --primary (pin it with accent) and the second colour is highlight.A bright place
Badge, headline and pills across the top; five columns of photographs; quote, scroll pill and video trigger along the foot. Three columns at tablet — a portrait, a stack and the tall one, then three landscapes in a row — and two on phones. Hover the photographs and the pills, open the video.
heading- is any node; wrap the words to colour in
<em>— the first takes the accent, the second thehighlight. Use<br />for a deliberate break. photos- are laid out left to right: one under the caption, two stacked, one tall in the middle, two stacked, one on the right. Each takes a
positionfor its crop. Fewer than seven is fine; the columns just empty. tags- are up to three pills, scattered and tilted at desktop and in a plain row below.
tonepicks soft / highlight / accent; the defaults cycle through them. video- renders the play trigger; its
urlis an embed URL shown in aDialogat 16:9.scrollLabelis aButtonthat scrolls toscrollTo, or the next section. reveal"in-view"- (the default) plays the sequence the first time the section enters the viewport; the docs pass
"immediate". Under prefers-reduced-motion the badge holds still and the section renders finished.
Installation
Install Collage Hero
components/ is written into your project. Copy any snippet from a Usage tab above and it runs.
Install dependencies
Step 1 installs these for you. Run them yourself only if you are adding Collage Hero to an existing project by hand. The cn helper and lucide-react are not listed — the installation guide covers them once for every component.
animated-typography, button, circular-text and dialog are components, not packages — the shadcn CLI installs them as source files.
The badge
CollageHero.Badge is exported on its own: the brand text set on an SVG circle with textPath, turning once every 22 seconds, around a logo — three dots in the accent and highlight by default, or anything you pass. Under prefers-reduced-motion it does not turn.Features
Built from the library
Button for the scroll pill, Dialog for the video. Both install with this item; the rest is Tailwind and one SVG.
One reveal, one thing that keeps moving
Headline, pills, photographs, footer — one timeline the first time the section appears. The turning badge is the only ambient motion, and it stops under reduced motion.
Two colours, from the theme
The accent is your primary colour unless you pin it; the second colour is one prop. Pills, badge, coloured words, play button and scroll pill all follow.
Real links and dialogs
The video trigger is keyboard-operable and opens a proper dialog with focus handling; every photograph carries its alt text; nothing depends on JavaScript to be visible.
Props Reference
| Prop | Type | Default | Description |
|---|---|---|---|
brand | string | — | The words that run around the badge. |
logo | ReactNode | three dots | What sits in the middle of the badge. |
heading | ReactNode | — | The headline. <em> words take the accent, then the highlight. |
tags | { label: string; tone?: "accent" | "highlight" | "soft" }[] | [] | Up to three pills. |
caption | string | — | Tracked caps over the first photograph. |
photos | { src: string; alt: string; position?: string }[] | — | Up to seven photographs, in layout order. |
quote | string | — | Footer quote, with a large opening mark in the accent. |
scrollLabel, scrollTo | string | "Keep scrolling", next section | The scroll pill and the selector it scrolls to. |
video | { eyebrow?: string; text: string; url: string; title?: string } | — | The play trigger and the embed it opens. |
accent | string | theme primary | Sets --primary for the section. |
highlight | string | "#f5c542" | The second colour. |
reveal | "in-view" | "immediate" | "in-view" | When the sequence plays. |
Hero Block
Word bounce hero
- Set
variant"bounce" - for a spring word bounce animation loop.
Typing hero
- Set
variant"typing" - for a character-by-character typewriter animation.
Typing hero, fixed title
The same hero with the title held in place while the word types and deletes.
- Set
prefixPosition"fixed" - so the text before the word keeps its place instead of re-centring.
Split marquee slider hero
- Set
variant"slider" - for a split 2-column hero featuring a continuous right-to-left thumbnail slider and floating visual cards.
Pet Shop & Animal Care Hero
- Set
variant"pet-shop" - for a clean, minimal e-commerce hero layout with circular image showcase and feature badges.
Doctor Portal & Healthcare Hero
- Set
variant"doctor" - for a clean medical & healthcare hero with specialist doctor showcase and appointment booking CTA.
Precision Facility & CAD Grid Hero
- Set
variant"facility" - for an architectural CAD blueprint grid hero with interactive morphing shape responding to left and right grid hover zones.
Atmospheric Cyclone Radar Hero
- Set
variant"vortex" - for a high-tech climate risk radar hero featuring an animated multi-armed rotating cyclone vortex, HUD telemetry overlay, and parcel metrics.
Orbit Ring Hero
Copy and actions on the left, revolving 3D circular photo orbit ring on the right with smooth hover pause.
- Set
variant"orbit" - for a revolving 3D circular photo orbit ring layout.
images- are the cards on the ring, in orbit order. Offset evenly by duration.
duration36- is the seconds for one full revolution.
highlights- are the dotted facts under the action buttons with customizable label and color.
Installation
Install Hero
components/ is written into your project. Copy any snippet from a Usage tab above and it runs.
Install dependencies
Step 1 installs this for you. Run it yourself only if you are adding Hero to an existing project by hand. The cn helper and lucide-react are not listed — the installation guide covers them once for every component.
animated-typography is a component, not a package — the shadcn CLI installs it as source files.
Props Reference
| Prop | Type | Default | Description |
|---|---|---|---|
variant | "bounce" | "typing" | "slider" | "glow-arc" | "pet-shop" | "doctor" | "facility" | "vortex" | "orbit" | "bounce" | The layout & animation style. "orbit" / "orbit-gallery" renders revolving 3D circular photo ring with upright cards & smooth hover pause; "bounce" uses spring word motion; "typing" uses typewriter effect; "slider" renders split 2-column hero with continuous marquee; "glow-arc" / "pet-shop" renders pet care hero; "doctor" renders medical test kits hero; "facility" renders architectural CAD blueprint grid hero with interactive morphing shape; "vortex" renders atmospheric cyclone radar simulation with animated rotating canvas and telemetry HUD. |
typingWords | string[] | ["Interfaces", "Components", …] | The rotating words between titlePrefix and titleSuffix. |
prefixPosition | "fixed" | "fluid" | "fluid" for typing, "fixed" for bounce | Whether the title before the rotating word holds still ( "fixed", keeping the longest word's width) or re-centres as the word types, deletes or swaps ("fluid"). The word itself is an AnimatedTypographyBlock. |
petImage · secondaryPetImage | string | Unsplash URLs | Custom image URLs for the main featured pet photo and secondary avatar badge photo (used when variant="pet-shop"). |
sliderImages | string[] | […] | Array of thumbnail image URLs for the continuous right-to-left marquee slider (used when variant="slider"). |
mainImage | string | "…" | Featured image URL for the right column (used when variant="slider"). |
badgeText · badgeHref · titlePrefix · titleSuffix · subtitle · cliCommand | string | — | Every string in the section is a prop, each with a sensible default. cliCommand feeds the one-click copy button. |
primaryActionLabel · primaryActionHref · secondaryActionLabel · secondaryActionHref | string | — | Label and destination for each of the two call-to-action buttons. |
eyebrow | string | "CLIMATE RISK, PER PARCEL" | Monospace uppercase eyebrow text shown above the main title (used in variant="vortex"). |
metrics | Array<{ value: string; label: string }> | 134M / 412K / 180ms | Array of 3 summary metrics shown at the bottom of the left column (used in variant="vortex"). |
hudTitle · hudTime · hudMetrics | string / Array | "GUST FIELD" / "T+36:30" / […] | Telemetry HUD card header and data points displayed in the bottom-right corner of the radar panel (used in variant="vortex"). |
rotationSpeed | number | 0.0025 | Angular rotation speed in radians per frame for the animated cyclone vortex canvas (used in variant="vortex"). |
color | string | undefined | Accent color — a preset name or any CSS color. Left unset it inherits your theme. |