- Token sweep: exact-value gold literals now use --wg-border / --wg-border-soft / --wg-focus - Topbar: drop invalid role="menuitem" (no parent role="menu") - topics_list: topic-select icons get role="checkbox", tabindex, aria-label; client.js makes them keyboard-operable and syncs aria-checked - category.tpl: copy-handle link gets an accessible name, "View Original" moved to i18n, external-link icon aria-hidden, stretched link inside aria-hidden alert removed from tab order - Footer: all copy moved to [[westgate:footer.*]] keys; year injected via filter:middleware.renderFooter instead of hard-coded 2026 - client.js: batch table measurements before writes (no interleaved reflow), .catch on the category class map so search results never hang, category selector match uses fw-bold class instead of inline style - Forced-colors focus fallback: transparent outline alongside the box-shadow focus ring - DESIGN.md: real radius scale (3/4/6/8px), code-block palette, motion & modes section, placeholder alpha Verified against the sow-nodebb dev container: themed code blocks render in posts, footer i18n + year, checkbox roles in served HTML. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
30 lines
1.3 KiB
JSON
30 lines
1.3 KiB
JSON
{
|
|
"id": "nodebb-theme-westgate",
|
|
"hooks": [
|
|
{ "hook": "static:app.load", "method": "init" },
|
|
{ "hook": "filter:admin.header.build", "method": "addAdminNavigation" },
|
|
{ "hook": "filter:widgets.getAreas", "method": "defineWidgetAreas" },
|
|
{ "hook": "filter:config.get", "method": "getThemeConfig" },
|
|
{ "hook": "filter:settings.get", "method": "getAdminSettings" },
|
|
{ "hook": "filter:user.saveSettings", "method": "saveUserSettings" },
|
|
{ "hook": "filter:user.profileMenu", "method": "addProfileItem" },
|
|
{ "hook": "filter:middleware.renderHeader", "method": "filterMiddlewareRenderHeader" },
|
|
{ "hook": "filter:middleware.renderFooter", "method": "filterMiddlewareRenderFooter" },
|
|
{ "hook": "filter:user.iconBackgrounds", "method": "getIconBackgrounds" }
|
|
],
|
|
"scripts": ["public/client.js", "../nodebb-theme-harmony/public/harmony.js"],
|
|
"templates": "templates",
|
|
"languages": "languages",
|
|
"modules": {
|
|
"../admin/plugins/theme-quickstart.js": "../nodebb-theme-harmony/public/admin.js",
|
|
"../client/account/theme.js": "../nodebb-theme-harmony/public/settings.js"
|
|
},
|
|
"staticDirs": {
|
|
"inter": "node_modules/@fontsource/inter/files",
|
|
"poppins": "node_modules/@fontsource/poppins/files",
|
|
"fonts": "public/fonts",
|
|
"game-icons": "public/game-icons",
|
|
"images": "public/images"
|
|
}
|
|
}
|