Joomla module
Meet Unfolder.
A hero that doesn't slide, spin, or make anyone wait.
Up to seven panels share one space. Hover, click or tap one and it unfolds, bringing its image, video, headline and buttons with it. The rest step politely aside. That's the whole trick, and it's a good one.
Chaotic Fish Design Team
The Team
The Chaotic Fish Design Team. Let's face it, there's too much to put into the caption. Take a closer look... if you dare.
Yes. Actual video
Sample Video option
Sample video of flowers opening up
Vimeo Sample
Check out Vimeo option
Short action cinematic epic intro. Ideally for your project! (Vimeo doesn't allow audio to be played in a background field)
Half-Ton Puppy
Tancho Issa Koi Fish
Professional Mud Enthusiast, Full-Time Guardian, Occasional Phone Thief
Why it exists
Sliders hide things. Grids just sit there.
Sliders make visitors wait for the good part, and most never see slide three. Static grids show everything at once, so nothing stands out. Unfolder sits in the middle: every option is visible from the first second, and the one someone chooses gets the whole stage.
In plain terms, it's a row of side-by-side panels. Pick one and it opens wide to tell its story, while the others slim down to labelled strips you can jump to next. On phones, the panels stack or turn into swipeable cards.
What's in the box
Small module. Big reveal.
Starting states
Two ways to begin
Equal columns over one shared cover image, or a single panel already open. Your call.
Open width
Unfolds as far as you say
Set the open panel anywhere from 50% to 85% on a slider. Strips never shrink past readable.
Video
Video that waits its turn
MP4, WebM, YouTube or Vimeo as silent background loops. Nothing loads until its panel opens.
Sound & captions
Volume on request
An optional speaker button and WebVTT captions for file-based videos. Silence stays the default.
Mobile
Phones get their own plan
Stacked bars that expand on tap, or a swipe row of full cards. You choose the breakpoint.
Auto-rotate
Knows when to stop
Optional rotation that pauses on hover, stops when someone clicks, and comes with a pause button.
Accessibility
Everyone gets the tour
Real buttons, full keyboard support, reduced-motion respect, and never more than one H1.
Performance
Light on its feet
About 5 KB of CSS and JavaScript. No jQuery, no framework, loaded once per page.
YouTube With Audio
Fashion Deep House by Infraction[ No Copyright Music] / Minimize
Infraction is one of the safest YouTube channels dedicated to no copyright music for content creators. Fashion Deep House no copyright music by Infraction.
Vimeo Kicker
Vimeo Title
Vimeo Text
Free Image
Muh Faris - Photo of Sky
Lighthouse with flowers against cloudy night sky scenic composition
Where it earns its keep
One hero, several stories.
Hospitality
Rooms, dining and activities, side by side in one hero.
Services
Divisions and offerings without a wall of cards.
Portfolios
A project per panel, with video where it helps.
Campaigns
Seasonal promos. Hide a panel without deleting it.
For the technical crowd
Under the hood.
- Works with
- Joomla 5.4 and Joomla 6, PHP 8.1+. No backward-compatibility plugins needed.
- Dependencies
- None. No jQuery, UIkit or Bootstrap JavaScript.
- Weight
- About 5 KB of CSS and JS, gzipped, via Joomla's Web Asset Manager.
- Video
- MP4/WebM from the media library or an HTTPS URL, YouTube (privacy-enhanced), Vimeo (private links too).
- Captions
- WebVTT, drawn in their own caption box so they never cover your buttons.
- Settings
- Panel count, starting state, open width, hover or click, auto-rotate, mobile layout and breakpoint, colours and type.
- Theming
- CSS custom properties, plus standard Joomla template overrides.
Ready to unfold?
Want Unfolder on your site? Let's talk.
Unfolder
Changelog.
1.0.0
Stable · September 2026First stable release. Tested on Joomla 5.4 and Joomla 6, in T4 and Cassiopeia, with two instances on one page, and checked with A11ytoolbar and Lighthouse.
- Hover, press and sound-on styles for the pause, sound and rotation buttons (disabled for reduced motion).
- Everything from the pre-releases below.
Pre-releases
0.1.5Video controls
- Pause/play button on every video panel (media library, direct URL, YouTube and Vimeo), meeting WCAG 2.2.2. A paused panel stays paused when the visitor returns to it; with reduced motion, videos wait for the play button.
- Sound for YouTube via Allow Sound, plus Show YouTube Captions.
- Admin: panel rows can collapse and expand, with Collapse all / Expand all. Each row's header shows its number and label, updating as you type. Rows with validation errors open automatically.
- Sound and pause buttons now announce their state through changing labels rather than
aria-pressed.
0.1.4Eight new options
- Image Shading slider (0–150%).
- Mobile Image per panel and Cover Image (Mobile), served below the mobile breakpoint via
<picture>. - Show From / Show Until scheduling per panel, checked on the server.
- Text Position: bottom left, bottom centre or centre.
- Link Name: links ending in
#nameopen that panel. - Analytics events:
unfolder:openandunfolder:close, with the panel label and what triggered the change. - Animation Speed: snappy, normal or relaxed.
- Custom CSS field (the
<character is stripped for safety). - Fix: the open panel's text box could be wider than the panel at narrow open widths (e.g. 50%), clipping the right edge of the text. It now sizes to the panel's actual open width.
0.1.3Gradients
- Gradient backgrounds for panels and the cover: linear or radial, start/end colours plus an optional middle colour, and an angle. Colours are validated as hex values before output.
- Cover fallback order: cover image, cover gradient, first panel image, first panel gradient.
0.1.2Bug fix
- Fix: the Switching Between Panels setting was ignored on sites where a Bootstrap 4→5 compatibility script renamed
data-bs-triggertodata-bs-trigger. - All Unfolder data attributes now use a
data-unf-prefix (e.g.data-unf-trigger,data-unf-src), so Bootstrap shims and lazy-load scripts can't claim them. If you made a template override in 0.1.0 or 0.1.1, update its attribute names.
0.1.1Trigger option
- "Desktop Trigger" renamed Switching Between Panels (Click / Hover), now defaulting to Click. Existing modules keep their saved setting.
- JavaScript now treats a missing trigger value as click instead of hover.
0.1.0First release
- 1–7 panels with All equal and One panel open starting states.
- Open width and minimum strip width sliders.
- Hover or click trigger; stacked or swipe mobile layouts.
- Background video from the media library, a direct HTTPS URL, YouTube or Vimeo.
- Sound toggle and WebVTT captions for media-library and URL videos.
- Auto-rotation with a pause control (One panel open mode).
- Accessibility: keyboard navigation, focus handling, reduced motion, single H1.
- Standalone demo included.