@@ -152,20 +152,39 @@ function populateSettingsForm() {
152152 const translationSelect = document . getElementById ( 'bibleTranslationSetting' ) ;
153153 const audioToggle = document . getElementById ( 'audioControlsToggle' ) ;
154154 const versionElement = document . getElementById ( 'appVersion' ) ;
155- const fontSizeSlider = document . getElementById ( 'fontSizeSlider' ) ;
156- const fontSizeValue = document . getElementById ( 'fontSizeValue' ) ;
155+ const scriptureFontSizeSlider = document . getElementById ( 'scriptureFontSizeSlider' ) ;
156+ const scriptureFontSizeValue = document . getElementById ( 'scriptureFontSizeValue' ) ;
157+ const notesFontSizeSlider = document . getElementById ( 'notesFontSizeSlider' ) ;
158+ const notesFontSizeValue = document . getElementById ( 'notesFontSizeValue' ) ;
159+ const themeToggle = document . getElementById ( 'themeToggleSetting' ) ;
157160 if ( translationSelect ) translationSelect . value = state . settings . bibleTranslation ;
158161 if ( audioToggle ) audioToggle . checked = state . settings . audioControlsVisible ;
159162 if ( versionElement ) versionElement . textContent = APP_VERSION ;
160- if ( fontSizeSlider ) {
161- fontSizeSlider . value = state . settings . fontSize || 16 ;
162- fontSizeSlider . addEventListener ( 'input' , ( ) => {
163- const val = fontSizeSlider . value ;
164- if ( fontSizeValue ) fontSizeValue . textContent = `${ val } px` ;
163+ if ( themeToggle ) {
164+ themeToggle . checked = state . settings . theme === 'dark' ;
165+ themeToggle . addEventListener ( 'change' , ( ) => {
166+ document . documentElement . setAttribute ( 'data-theme' , themeToggle . checked ? 'dark' : 'light' ) ;
165167 } ) ;
166168 }
167- if ( fontSizeValue ) {
168- fontSizeValue . textContent = `${ state . settings . fontSize || 16 } px` ;
169+ if ( scriptureFontSizeSlider ) {
170+ scriptureFontSizeSlider . value = state . settings . scriptureFontSize || 16 ;
171+ scriptureFontSizeSlider . addEventListener ( 'input' , ( ) => {
172+ const val = scriptureFontSizeSlider . value ;
173+ if ( scriptureFontSizeValue ) scriptureFontSizeValue . textContent = `${ val } px` ;
174+ } ) ;
175+ }
176+ if ( scriptureFontSizeValue ) {
177+ scriptureFontSizeValue . textContent = `${ state . settings . scriptureFontSize || 16 } px` ;
178+ }
179+ if ( notesFontSizeSlider ) {
180+ notesFontSizeSlider . value = state . settings . notesFontSize || 16 ;
181+ notesFontSizeSlider . addEventListener ( 'input' , ( ) => {
182+ const val = notesFontSizeSlider . value ;
183+ if ( notesFontSizeValue ) notesFontSizeValue . textContent = `${ val } px` ;
184+ } ) ;
185+ }
186+ if ( notesFontSizeValue ) {
187+ notesFontSizeValue . textContent = `${ state . settings . notesFontSize || 16 } px` ;
169188 }
170189 updateColorThemeSelection ( ) ;
171190}
@@ -191,12 +210,18 @@ export async function saveSettings() {
191210 try {
192211 showLoading ( true ) ;
193212 const newSettings = getSettingsFromForm ( ) ;
213+ const oldNotesFontSize = state . settings . notesFontSize ;
194214 validateSettings ( newSettings ) ;
195215 await applyNewSettings ( newSettings ) ;
196216 saveSettingsToStorage ( ) ;
197217 updateUIAfterSettingsChange ( ) ;
198218 closeSettings ( ) ;
199- await reloadPassageWithNewSettings ( ) ;
219+ if ( newSettings . notesFontSize !== oldNotesFontSize ) {
220+ alert ( 'Notes font size changed. Page will refresh to apply changes.' ) ;
221+ setTimeout ( ( ) => window . location . reload ( ) , 1000 ) ;
222+ } else {
223+ await reloadPassageWithNewSettings ( ) ;
224+ }
200225 } catch ( error ) {
201226 handleError ( error , 'saveSettings' ) ;
202227 alert ( 'Error saving settings: ' + error . message ) ;
@@ -209,13 +234,17 @@ function getSettingsFromForm() {
209234 const audioToggle = document . getElementById ( 'audioControlsToggle' ) ;
210235 const selectedTheme = document . querySelector ( '.color-theme-option.selected' ) ;
211236 const narratorSelect = document . getElementById ( 'narratorSelect' ) ;
212- const fontSizeSlider = document . getElementById ( 'fontSizeSlider' ) ;
237+ const scriptureFontSizeSlider = document . getElementById ( 'scriptureFontSizeSlider' ) ;
238+ const notesFontSizeSlider = document . getElementById ( 'notesFontSizeSlider' ) ;
239+ const themeToggle = document . getElementById ( 'themeToggleSetting' ) ;
213240 return {
214241 translation : translationSelect ?. value || state . settings . bibleTranslation ,
215242 audioControlsVisible : audioToggle ?. checked ?? state . settings . audioControlsVisible ,
216243 colorTheme : selectedTheme ?. dataset . theme || state . settings . colorTheme ,
217244 narrator : narratorSelect ?. value || state . settings . audioNarrator ,
218- fontSize : fontSizeSlider ? parseInt ( fontSizeSlider . value , 10 ) : state . settings . fontSize
245+ scriptureFontSize : scriptureFontSizeSlider ? parseInt ( scriptureFontSizeSlider . value , 10 ) : state . settings . scriptureFontSize ,
246+ notesFontSize : notesFontSizeSlider ? parseInt ( notesFontSizeSlider . value , 10 ) : state . settings . notesFontSize ,
247+ theme : themeToggle ?. checked ? 'dark' : 'light'
219248 } ;
220249}
221250function validateSettings ( settings ) {
@@ -231,10 +260,13 @@ async function applyNewSettings(newSettings) {
231260 state . settings . audioControlsVisible = newSettings . audioControlsVisible ;
232261 state . settings . colorTheme = newSettings . colorTheme ;
233262 state . settings . audioNarrator = newSettings . narrator || state . settings . audioNarrator ;
234- state . settings . fontSize = newSettings . fontSize ?? state . settings . fontSize ;
263+ state . settings . scriptureFontSize = newSettings . scriptureFontSize ?? state . settings . scriptureFontSize ;
264+ state . settings . notesFontSize = newSettings . notesFontSize ?? state . settings . notesFontSize ;
265+ state . settings . theme = newSettings . theme ;
235266 updateURL ( newSettings . translation , state . settings . manualBook , state . settings . manualChapter , 'push' ) ;
236267 updateAudioControlsVisibility ( ) ;
237268 updateBibleGatewayVersion ( ) ;
269+ applyTheme ( ) ;
238270}
239271function saveSettingsToStorage ( ) {
240272 saveToStorage ( ) ;
@@ -247,7 +279,10 @@ function updateUIAfterSettingsChange() {
247279 referenceTranslationSelect . value = state . settings . referenceVersion ;
248280 }
249281 if ( typeof updateScriptureFontSize === 'function' ) {
250- updateScriptureFontSize ( state . settings . fontSize ) ;
282+ updateScriptureFontSize ( state . settings . scriptureFontSize ) ;
283+ }
284+ if ( typeof updateNotesFontSize === 'function' ) {
285+ updateNotesFontSize ( state . settings . notesFontSize ) ;
251286 }
252287}
253288async function reloadPassageWithNewSettings ( ) {
0 commit comments