@@ -45,17 +45,18 @@ export default defineNuxtPlugin((nuxtApp) => {
4545 const forcedColorMode = to . meta . colorMode
4646
4747 if ( forcedColorMode && forcedColorMode !== 'system' ) {
48- colorMode . value = forcedColorMode
48+ setColorModeValue ( colorMode , forcedColorMode )
4949 colorMode . forced = true
5050 }
5151 else {
5252 if ( forcedColorMode === 'system' ) {
5353 console . warn ( 'You cannot force the colorMode to system at the page level.' )
5454 }
5555 colorMode . forced = false
56- colorMode . value = colorMode . preference === 'system'
56+ const newValue = colorMode . preference === 'system'
5757 ? helper . getColorScheme ( )
5858 : colorMode . preference
59+ setColorModeValue ( colorMode , newValue )
5960 }
6061 } )
6162
@@ -69,7 +70,7 @@ export default defineNuxtPlugin((nuxtApp) => {
6970 darkWatcher = window . matchMedia ( '(prefers-color-scheme: dark)' )
7071 darkWatcher . addEventListener ( 'change' , ( ) => {
7172 if ( ! colorMode . forced && colorMode . preference === 'system' ) {
72- colorMode . value = helper . getColorScheme ( )
73+ setColorModeValue ( colorMode , helper . getColorScheme ( ) )
7374 }
7475 } )
7576 }
@@ -93,11 +94,11 @@ export default defineNuxtPlugin((nuxtApp) => {
9394 return
9495 }
9596 if ( preference === 'system' ) {
96- colorMode . value = helper . getColorScheme ( )
97+ setColorModeValue ( colorMode , helper . getColorScheme ( ) )
9798 watchMedia ( )
9899 }
99100 else {
100- colorMode . value = preference
101+ setColorModeValue ( colorMode , preference )
101102 }
102103
103104 setPreferenceToStorage ( storage , preference )
@@ -129,10 +130,15 @@ export default defineNuxtPlugin((nuxtApp) => {
129130 nuxtApp . hook ( 'app:mounted' , ( ) => {
130131 if ( colorMode . unknown ) {
131132 colorMode . preference = helper . preference
132- colorMode . value = helper . value
133+ setColorModeValue ( colorMode , helper . value )
133134 colorMode . unknown = false
134135 }
135136 } )
136137
137138 nuxtApp . provide ( 'colorMode' , colorMode )
138139} )
140+
141+ function setColorModeValue ( colorMode : ColorModeInstance , value : string ) {
142+ // @ts -expect-error readonly property
143+ colorMode . value = value
144+ }
0 commit comments