summaryrefslogtreecommitdiff
path: root/assets/js
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-09-10 15:54:14 +0800
committerEltrac <hi@guhub.cn>2025-09-10 15:54:14 +0800
commit4c6b558d89ca33b4e57f31be2c1eb68a59e41038 (patch)
tree965950ca9e0befa79d78b986c1ee9f9edd39bfdd /assets/js
parent3d8c42f80bc0cfea9722d99e236d46d075648544 (diff)
feat: add settings page and text altering options
Diffstat (limited to 'assets/js')
-rw-r--r--assets/js/settings.js65
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();
+})();