| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| README.md | 2026-05-24 | 9.7 kB | |
| Whakerexa-3.0.zip | 2026-05-24 | 4.6 MB | |
| Whakerexa-2.1.zip | 2026-03-29 | 5.0 MB | |
| Whakerexa-2.0.zip | 2025-12-21 | 5.0 MB | |
| Whakerexa-1.0.zip | 2025-10-07 | 4.9 MB | |
| Whakerexa-0.8.zip | 2025-09-15 | 4.9 MB | |
| Whakerexa-0.7.zip | 2024-11-20 | 4.7 MB | |
| Whakerexa-0.6.zip | 2024-11-18 | 4.7 MB | |
| Whakerexa-0.5.zip | 2024-10-12 | 4.6 MB | |
| Whakerexa-0.4.zip | 2024-04-30 | 4.6 MB | |
| Whakerexa-0.3.zip | 2024-04-20 | 4.6 MB | |
| Whakerexa-0.2.zip | 2024-04-05 | 4.6 MB | |
| Whakerexa-0.1.zip | 2024-03-30 | 929.7 kB | |
| Totals: 13 Items | 53.2 MB | 0 |
Whakerexa — A minimalist and lightweight web kit for accessible contents
Overview
Whakerexa is a lightweight front-end toolkit that blends clarity, accessibility, and flexibility, and long-term maintainability.
It provides a modern CSS foundation and a fully modular ES6 JavaScript components to build interfaces that are both elegant and inclusive — with minimal code and maximum readability, without dependencies.
Designed around accessibility from the start, Whakerexa makes it easy to craft clean, human-friendly HTML that just works — without drowning your pages in class names or dependencies. Every visual aspect — colors, typography, spacing, animations — is defined through CSS variables, giving you full creative control with a few redefinitions.
Version 2.0 introduces a unified public API through wexa.js and a stable global namespace through wexa.bundle.js, ensuring support for both modern ES6 module-based applications and offline/static environments.
It pairs naturally with WhakerPy, the lightweight Python library for generating dynamic HTML, offering a seamless workflow from code to design.
Features
- ✨ Lightweight, semantic, dependency-free, and modular
- 🌓 Built-in light / dark themes
- 🔆 High-contrast accessibility mode
- 🎨 Fully customizable through CSS variables — using
@layerso your rules always win without!important - 🧩 Composable and extensible — adapt to your needs
- ⚙️ Object-oriented ES6 components
- ⚙️ Unified API (
import … from "wexa.js"orWexa.*) - ⚙️ Single-file bundle for no-module environments
- ⚙️ Zero dependencies, 100 % open source
Install Whakerexa
Whakerexa is distributed as a ZIP archive.
Simply unpack it.
Quick Start
For usage examples of the CSS and JS frameworks, visit the online documentation:
👉 https://whakerexa.sourceforge.io
The HTML files available in the docs folder are also provided for offline reference,
but note that dynamic examples (those using JavaScript modules) require a web server
and will not work if opened directly from your disk (file:// protocol).
Browse the local documentation with:
> python -m http.server 8000
Then open a new tab into Firefox with the url: http://localhost:8000/docs/
Projects using Whakerexa
Whakerexa was initially developed within SPPAS https://sppas.org. It was extracted from its original software in 2024 by the author to lead its own life as standalone tool.
Websites
It is used by the website of the "AutoCuedSpeech" project at https://auto-cuedspeech.org and the website of SPPAS https://sppas.org.
Author/Copyright
Copyright (C) 2023-2026 - Brigitte Bigi, CNRS - contact@sppas.org Laboratoire Parole et Langage, Aix-en-Provence, France.
See the AUTHORS file for the full list of contributors.
License
Whakerexa is under the terms of the GNU Affero General Public License, version 3.
Support
Whakerexa was initially developed within https://auto-cuedspeech.org project, generously funded by FIRAH (Fondation Internationale de Recherche Appliquée sur le Handicap), https://www.firah.org/. It is also developed with the support of Laboratoire Parole et Langage https://lpl-aix.fr.
Changes
Version 0.1
- Initial version, extracted from SPPAS 4.17.
- Added or updated, and tested JavaScripts
- Updated CSS frameworks to be more generic
- Added HTML documentation of the CSS frameworks
- Added a CSS/JS framework for playing a video in a popup dialog
Version 0.2
- Added code.css, a set of colors for highlighting source code.
- Added menu.css, a solution for an accessible responsive sticky menubar
- Added layout.css, a set of classes to easily organize HTML content
- Added accordion.js which must be added when using "rise-panel"
Version 0.3
- Changed some colors of code.css
- Added variable 'border-radius' in wexa.css
- Modified details/summary to act and look like buttons
- The "rise-panel/accordion" is deprecated (HTML-3), use HTML-5 details/summary instead
- Added modal dialogs to show an alert message: info, success, warning, error, tips, question
Version 0.4
This is mainly a bug-correction version: adjusted some width, removed transparency of background dialogs, corrected a bug in accessibility.
Version 0.5
- Added accessibility icons
- Added upload of files in request.js
- Minor CSS changes
- Migrated license, from GPL to AGPL.
Version 0.6
- Added
sortatable: a CSS/JS utility designed for sorting table rows in ascending or descending order - Added
toggleselect: CSS/JS utility for toggling checkbox states. - Added custom buttons: introduced CSS classes
text-reveal-button,action-button,apply-buttonandswitch. - Updated request.js: better support of upload, better error management in post.
Version 0.7
- Re-organized documentation
- Updated the switch button
- Debug of action-button
- Minor changes in wexa.css
Version 0.8
- This is mainly some debug.
Version 1.0
Version 1.0 establishes Whakerexa as a modular, object-oriented web kit centered on a unified entry point.
-
Core entry point:
wexa.js, which instantiates:- OnLoadManager — Delayed, ordered component initialization.
- WexaLogger — Unified logging.
- AccessibilityManager — Color mode (light/dark) and contrast mode.
- MenuManager — Navigation menus and submenus.
- DialogManager — Opening/closing dialogs and popup videos.
-
Menus are fully re-implemented (CSS + JS). See
docs/menu.html. - Dialogs are managed by
DialogManager(legacy functions replaced). - Backward compatibility with pre-1.0 procedural APIs is limited and not fully ensured.
- Not all minor/specialized classes have been ported (e.g.,
Book,ToggleSelector,SortaTable).
This version also includes a set of monochrome SVG icons.
Version 2.0
Version 2.0 is a complete modernization. Previous procedural APIs are not preserved.
- Unified ES6 entry point (
wexa.js) exporting all components. wexa.bundle.jsexposes the global namespacewindow.Wexaforfile://usage.- The
progress()function is removed. Use theProgressBarclass instead (seedocs/progressbar.html). - Use
Wexa.onloadinstead ofOnLoadManager,Wexa.dialoginstead ofDialogManager, etc. WexaLoggeris extended: numeric levels from 0 (most verbose) to 50 (critical only). Messages are shown when their level is >= the currentlogLevel.- Improved
request.js: JSON detection throughContent-Typewith silent fallback for non-JSON responses. - Updated documentation and offline demos. Fixed license documentation to GFDL 1.3, except for slides. See: https://www.gnu.org/licenses/fdl-1.3.en.html for details.
- Added an "extra" JS package for slides. Currently proposed as a PoC.
Version 2.1
Increased accessibility and corrected bugs.
Version 3.0 - stable
Version 3.0 introduces architectural changes in CSS and JavaScript. Previous CSS selectors and JS APIs are not preserved.
- CSS now uses
@layer reset, base, theme, accessibility. Rules written outside any layer override framework defaults automatically — no!importantneeded. - Light/dark/contrast modes are controlled by
.darkand.contrastclasses on:root(the old[data-theme=dark]attribute is removed). - Print styles moved to a separate
print.cssloaded withmedia="print". - Alternative themes are standalone CSS files containing only an
@layer themeblock. Three themes are provided:wexa_theme(navy/teal),aurora(blue/mauve/violet) andhighcontrast. - New
ThemeManagerclass: registers named themes, cycles through them, and persists the choice via URL parameter. - New
SVGIconsManagerclass: loads SVG icons fromicons/mono-svg/and injects them inline so they inheritcurrentColor.inject(element, name)guards against double-injection. In bundle mode, icons are pre-registered at build time — nofetch()required onfile://. AccessibilityManagermanages exactly two modes — color (light/dark) and contrast (normal/high). Methods renamed toswitchColorScheme()andswitchContrastScheme().- Card inner zones renamed: use
<div class="card-header">,.card-body,.card-footerinside<article class="card">. - New
.cta-buttonclass inbutton.css. code.css: complete dark-mode color palette.- Slides: new handout (
d), overview (o) and memo (m) view modes. Speaker notes are now<aside for="slide-id">siblings, not nested inside the slide. A help dialog (h/?) lists all keyboard shortcuts. The slides loader auto-detectsfile://vshttp(s)://and loads the bundle or ES module accordingly. Nav control font-size is controlled by--slides-nav-font-size, defined per view mode.
Breaking changes:
| What changed | Old | New |
|---|---|---|
| Theme selector | [data-theme=dark] |
.dark on :root |
| Card inner zones | <header>, <main>, <footer> |
.card-header, .card-body, .card-footer |
| Slide notes | <aside role="note"> inside slide |
<aside for="slide-id"> sibling |
| Toggleselect button | .action-button |
.toggleselect-action |
| Book ToC nav | .side-nav |
.book-toc |
| Book number variable | --numbers-color |
--numbers-bg-color / --numbers-fg-color |
| Print styles | @media print per file |
print.css |
| Accessibility button | btn-theme |
btn-color |
Known bugs
layout.cssalternatespanel-itemsection backgrounds viamain > .panel-item:nth-child(even), which redefines--bg-colorand--fg-color. Some child elements (cards, code blocks, etc.) do not inherit these redefined variables and render with the wrong background color.