diff options
| author | Eltrac <hi@guhub.cn> | 2025-09-10 15:54:14 +0800 |
|---|---|---|
| committer | Eltrac <hi@guhub.cn> | 2025-09-10 15:54:14 +0800 |
| commit | 4c6b558d89ca33b4e57f31be2c1eb68a59e41038 (patch) | |
| tree | 965950ca9e0befa79d78b986c1ee9f9edd39bfdd /assets/js | |
| parent | 3d8c42f80bc0cfea9722d99e236d46d075648544 (diff) | |
feat: add settings page and text altering options
Diffstat (limited to 'assets/js')
| -rw-r--r-- | assets/js/settings.js | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/assets/js/settings.js b/assets/js/settings.js new file mode 100644 index 00000000..08e7a1de --- /dev/null +++ b/assets/js/settings.js @@ -0,0 +1,65 @@ +(() => { + /** + * =========== + * Font Size + * =========== + */ + + const setFontSize = (size) => { + if (size) localStorage.setItem('fontSize', size); + const fontSizeSelected = size || localStorage.getItem('fontSize') || 'medium'; + + const markdownBodies = document.querySelectorAll('.markdown-body'); + + const fontSizeClass = { + 'small': ['text-size-sm', 'md:text-size-base'], + 'medium': ['text-size-lg', 'md:text-size-xl'], + 'large': ['text-size-xl', 'md:text-size-2xl'] + } + + markdownBodies.forEach((body) => { + // remove existing font size classes + body.classList.remove(...fontSizeClass['small'], + ...fontSizeClass['medium'], + ...fontSizeClass['large']) + // add required font classes + body.classList.add(...fontSizeClass[fontSizeSelected]) + }); + } + setFontSize(); + + /** + * =========================== + * Initialize Settings Page + * =========================== + */ + + // return if this is not the settings page + if (!document.getElementById('settings')) return; + + const initializeSettingsPage = () => { + // initialize text altering buttons + function initTextAlterButtons() { + const textAlterButtons = document.querySelectorAll('#text-alter-buttons button'); + textAlterButtons.forEach(button => { + // highlight selected button + if (button.dataset.textSize === localStorage.getItem('fontSize')) { + button.classList.add('bg-neutral-200/50'); + } + + // switch font size when clicked + button.addEventListener('click', () => { + setFontSize(button.dataset.textSize); + // highlight selected button + textAlterButtons.forEach(btn => btn.classList.remove('bg-neutral-200/50')); + button.classList.add('bg-neutral-200/50'); + }); + }); + } + initTextAlterButtons() + + //... + }; + + initializeSettingsPage(); +})(); |
