Files
FixIt/assets/js/main.ts
T
Cell 17d7bc1781 refactor(assets): SCSS variables with hugo:vars and module setup standardization (#788)
* feat(assets): refactor SCSS variables with Hugo config via hugo:vars

Use Hugo's hugo:vars mechanism (v0.161.0+) to configure SCSS variables
via [params.appearance] in hugo.toml, replacing the override.scss file.

- Add [params.appearance] config section in hugo.toml
- Create scss-vars.html partial for SCSS default values
- Pass vars to toCSS via head/index.html
- Rewrite _variables.scss to use @use "hugo:vars" as h with !default
- Update all 20 consumer files from @use "override" to @use "variables"
- Delete override.scss
- Add admonition mixin in core/mixins/_admonition.scss
- Update deprecation detection to use fileExists

* refactor(assets): standardize module setup() and simplify main.ts init

- Add setup() method to all modules (menu, theme, search, enc, misc, events)
- Rename initMenu to setup, initMenuDesktop/initMenuMobile to initDesktop/initMobile
- Rename initSearch, initFixItDecryptor to setup
- Standardize setup() position at end of each module class and interface
- Simplify main.ts init sequence to uniform setup() calls

* refactor(assets): replace config.template.scss with hugo:vars/internal

- Delete config.template.scss and its ExecuteAsTemplate pipeline
- Pass internal config (base URL, logo, loading) via hugo:vars/internal namespace
- Move CSS custom properties to _root.scss using set-fi-vars mixin
- Simplify _variables.scss by removing config namespace dependency
- Update CLAUDE.md to reflect new SCSS architecture

* style(i18n): fix spacing in Korean translation strings

* fix(assets): resolve dead SCSS config keys and deduplicate defaults

- Wire up 5 config keys with v.$ references: menu-active-color,
  tag-cloud-start, tag-cloud-end, tag-cloud-end-dark,
  pagination-link-color-dark (were reading from SCSS vars, ignoring
  hugo:vars overrides)
- Remove dead !default flags from all v.$ references (hugo:vars
  always provides values, making !default unreachable)
- Compute derived defaults in scss-vars.html from base values instead
  of hardcoding duplicates
- Extract admonition mixin set-fi-vars map to shared $vars variable
2026-06-22 02:43:35 +08:00

44 lines
1.2 KiB
TypeScript

import { printBanner } from './core/banner'
import { PublicAPI } from './core/public-api'
/**
* FixIt theme entry point — initializes all modules and the window.fixit facade.
*
* Responsibilities:
* - Create PublicAPI which initializes all service modules.
* - Run the init sequence on `DOMContentLoaded`.
*/
function bootstrap(): void {
// Build window.fixit facade with all modules
window.fixit = new PublicAPI()
/**
* Initialize all modules in dependency order.
*
* 1. UI framework — menu (mask overlay), theme (color scheme)
* 2. Interactive components — toc (sidebar), search (overlay)
* 3. Content enhancement — content (details, tooltips), enc (decryption)
* 4. Global features — misc (PWA, comments), events (scroll, resize)
*/
function init() {
try {
window.fixit.menu.setup()
window.fixit.theme.setup()
window.fixit.toc.setup()
window.fixit.search.setup()
window.fixit.content.setup()
window.fixit.enc.setup()
window.fixit.misc.setup()
window.fixit.events.setup()
}
catch (err) {
console.error(err)
}
printBanner(window.fixit.version)
}
document.addEventListener('DOMContentLoaded', init, false)
}
bootstrap()