- Move data-toc-scope from outer column to .article-content div so
the TOC only sees headings inside the article body, ignoring page
headers and article titles.
- Pass $scope explicitly in the JS auto-init so headings outside the
article content are never picked up.
- Replace hardcoded article title in TOC heading with a
TPL_MOKOCASSIOPEIA_TOC_TITLE language string ("Table of Contents").
- Add Text use statement to both toc-left.php and toc-right.php.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Development mode now activates automatically when Joomla global
debug is enabled, so admins don't need to toggle both settings.
- Bootstrap TOC now detects the highest heading level present (even
if only one exists) and includes up to two levels below it
(e.g. h2 → h2, h3, h4). Fixes incorrect top-level detection and
adds proper three-level nesting support.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add update-safe note to light and dark custom palette descriptions
in both en-US and en-GB language files, matching the existing
user.css/user.js messaging.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds a floating accessibility toolbar to the template with individually
enable/disable options: text resize, color inversion, high contrast,
highlight links, readable font, and pause animations. Each option has
an admin toggle in the Theme tab and persists visitor preferences in
localStorage. Also fixes count() on null in mod_login override.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
.container-header had position:relative which overrode .sticky-top's
position:sticky due to CSS source order (container-header appeared
later). Removed the conflicting rule. Added .container-header.sticky-top
with z-index:1020 to keep header above all content. Mobile media query
now only disables sticky when the sticky class is present.
Fixes#115
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Load only all.css (or all.min.css) instead of 5 redundant files
- Trim fA6KitCode to prevent whitespace from triggering CDN path
- Remove nested try/catch with 10 fallback registrations
- Single clean try/catch with one dynamic fallback
- all.css already bundles brands + solid + regular + fontawesome
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
mod_finder:
- Use correct language keys (MOD_FINDER_SEARCH_VALUE, JSEARCH_FILTER_SUBMIT)
- Use $app (available from module dispatcher) instead of Factory
- Load com_finder.finder script and awesomplete preset
- Add show_label, show_button, show_advanced support from core
- Register com_finder extension assets
- Use $route from module dispatcher (not hardcoded)
mod_footer:
- Use $lineone variable from module helper (not $module->content)
- Add MOD_FOOTER_LINE2 language string output
- mod_footer generates its own content, it's not a custom HTML module
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Added explicit language loading for overrides that use Text::_():
- mod_breadcrumbs: loads mod_breadcrumbs language
- mod_login: loads mod_login language
- mod_finder: loads mod_finder + com_finder language
- mod_articles_category: loads mod_articles_category language
Without this, language strings could show as raw keys when the
module chrome doesn't preload the language file.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- helper/minify.php: PHP-based CSS/JS minifier with timestamp caching
- Dev mode ON: deletes all .min.css and .min.js files
- Dev mode OFF: regenerates .min files from source if stale or missing
- Covers template.css, light/dark standard/custom theme CSS, template.js
- No external build tools needed — template is self-contained
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- When dev mode OFF (default): loads template.min.css,
template.min.js, minified theme CSS, and minified FA7
- When dev mode ON: loads unminified sources for debugging
- Uncommented developmentmode field in templateDetails.xml
with default set to 0 (off) for production use
- Updated language strings to describe minification behavior
- Resolved hero-card-max-width to 800px
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Both positions already existed but rendered unconditionally.
Now wrapped with $this->countModules() checks so the containing
<div> only renders when modules are assigned to the position.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New default.php overrides for 11 Joomla core modules:
- mod_custom (default + updated hero layout)
- mod_articles_latest, mod_articles_popular, mod_articles_news
- mod_articles_category, mod_breadcrumbs, mod_footer
- mod_login (BS5 form with FA7 icons), mod_finder (BS5 search)
- mod_tags_popular (badge layout), mod_tags_similar, mod_related_items
All overrides consistently respect:
- $module->showtitle — renders title only when enabled
- header_tag param — configurable heading level (h1-h6)
- header_class param — custom CSS class on the title
- moduleclass_sfx — custom suffix class on the wrapper
CSS additions in template.css:
- Shared __title styles for all module headings
- List styling for article/tag/related modules
- Newsflash card layout, tag badges, search form, login form
- Breadcrumb and footer module styling
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- New "Favicon" tab in template config with media picker for PNG upload
- helper/favicon.php generates all standard sizes from source PNG using GD:
- favicon.ico (16x16 + 32x32 embedded)
- apple-touch-icon.png (180x180)
- favicon-32x32.png, favicon-16x16.png
- android-chrome-192x192.png, android-chrome-512x512.png
- site.webmanifest for PWA icon discovery
- Generated files cached in images/favicons/ with timestamp checking
- Link tags auto-injected in <head> when favicon source is configured
- Language strings added for en-GB and en-US
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Hero card fully variable-driven: --hero-card-bg/color/overlay/border-radius/padding/max-width
- Alternative hero variant: --hero-alt-card-* for secondary theme
- Overlay bg-position and bg-size now customizable via variables
- Mobile breakpoint: photo bg hidden, hero full-bleed on small screens
- Added fallback values to 1365 var() calls in template.css
- .btn --btn-bg changed from transparent to var(--body-bg) in dark/light themes
- .offcanvas-header .btn-close gets background-color from overlay
- Stripped file info headers (@package/DEFGROUP/VERSION) from 48 files, kept copyright/SPDX
- Synced all theme variables across standard and custom templates
- Removed 26 mobile.php layout overrides
- Added *.py to .gitignore, card-border-radius fallback
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace CSS border-triangle dropdown toggles with FontAwesome chevron icon
- Fix footer: use --nav-bg-color background, --mainmenu-nav-link-color links, add display:flex to grid-child
- Dynamic footer padding-right when theme control is active
- Drawer close buttons: align left in left drawer, right in right drawer
- Fix .menu-horizontal selector (was .metismenu.menu-horizontal, actual output is .mod-menu.menu-horizontal)
- Add horizontal padding to .mod-list li
- Joomla 6 compat: replace legacy JHtml with namespaced HTMLHelper in mod_kunenalogin
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New "Brand Showcase" tab in Joomla template configuration embeds
brand-showcase.html — features color system gradients with hover-to-sample
pixel picker, branded nav, typography, buttons, badges, alerts, tables,
forms, cards, accordion, and tabs. Light/dark toggle included.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds all 20 hero variant and block color CSS variables to both
light.standard.css and dark.standard.css, matching the custom palette
templates. Users on the standard palette now get hero variants and
block colors out of the box.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merges the full Joomla branded-bootstrap5 article content into theme-test.html:
nav sample, typography, buttons, badges/alerts, tables, forms, cards/list groups,
breadcrumb/pagination, progress bars, and computed CSS variable swatches that
display resolved values via JavaScript.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add .hero#primary / .hero#secondary CSS variant system to template.css
- Add :nth-child() block color palette for top-a/b, bottom-a/b positions
- Add named per-module overrides (#block-highlight, #block-cta, #block-alert)
- Add all hero + block CSS variables to light/dark custom palette templates
- Add theme-test.html with full visual CSS variable reference + color test
- Add "Theme Preview" tab to admin config with embedded iframe of test sheet
- Add script.php install/update script (Joomla 5/6 compatible)
- Add sync_custom_vars.php — detects missing vars in user palettes on upgrade
- Add en-GB and en-US language strings for new admin config fields
- Update CSS_VARIABLES.md and CHANGELOG.md
- Bump version to 03.09.02
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add LABEL/DESC language strings (en-US + en-GB) for all 17 Bootstrap
component variable groups now living in the :root theme files:
accordion, alert, badge, backdrop, breadcrumb, dropdown, list-group,
modal, nav-tabs, nav-pills, pagination, popover, progress, spinner,
table, toast, tooltip
Each section documents variables with HTML subheadings (Dimensions,
Colours, Typography, Stacking, Animation) and <code> tags for every
variable name. British English spellings used throughout en-GB.
Adds 34 new lines per language file (17 LABEL + 17 DESC pairs, 80
CSS_VARS_* keys total). XML fields were already present from the
prior migration commit.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Move --table-* and --backdrop-* base definitions from component selectors
in template.css into :root[data-bs-theme] blocks in light/dark theme files.
Dark table uses white-rgb-based striped/active overlays for proper contrast
on dark surfaces. Deduplicate the double --table-active-* declarations that
existed in template.css. Backdrop values are identical in both themes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Move 16 component variable groups from component-scoped selectors in
template.css into :root[data-bs-theme] blocks in light.standard.css and
dark.standard.css:
accordion, breadcrumb, pagination, badge, alert, progress, list-group,
dropdown, toast, modal, tooltip, popover, spinner, nav, nav-tabs, nav-pills
Dark theme values adapted for dark surfaces: semantic var() references,
lighter SVG icon fill colours, heavier shadows, secondary-bg backgrounds.
Component selectors in template.css retain only non-variable rules.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Move --offcanvas-* definitions from component-scoped .offcanvas selector in
template.css into :root[data-bs-theme] blocks in light.standard.css and
dark.standard.css so they are overridable via user.css at root level
- Fix two bugs in the old definitions: --offcanvas-bg was incorrectly set to
var(--body-color) (text colour); corrected to var(--body-bg); and
--offcanvas-color had a spurious 'color:' prefix
- Dark theme uses a heavier box-shadow (0.3 alpha) for better depth perception
- Add css_vars_offcanvas field to templateDetails.xml CSS Variables tab
- Add en-US and en-GB language strings for the new Offcanvas Panel section
- Rebuild all .min CSS files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Consolidate the two @media (prefers-reduced-motion: no-preference) blocks
into one — scroll-behavior and theme-switch colour transitions share the
same query and are cleaner in a single block.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- New position renders inside .header-brand-wrap, right-aligned via
margin-inline-start: auto on .container-header-aside
- CSS: .header-brand-wrap uses flexbox so logo stays left, aside floats right
- Registered in templateDetails.xml positions list
- Language strings added to both en-US and en-GB sys.ini files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add googlesitekey param to Google fieldset in templateDetails.xml
- Inject <meta name="google-site-verification"> via setMetaData() in
index.php, component.php, and offline.php
- GTM, GA, and Search Console verification can now all be active simultaneously
- Add language strings for new field in en-US and en-GB
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>