@@ -3,6 +3,7 @@ import { onKeyStroke, onClickOutside } from '@vueuse/core'
33
44const { settings } = useSettings ()
55const { locale, locales, setLocale } = useI18n ()
6+ const colorMode = useColorMode ()
67
78const availableLocales = computed (() =>
89 locales .value .map (l => (typeof l === ' string' ? { code: l , name: l } : l )),
@@ -96,14 +97,16 @@ onKeyStroke(',', e => {
9697 >
9798 <span class =" text-sm text-fg select-none" >{{ $t('settings.relative_dates') }}</span >
9899 <span
99- class =" relative inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent transition-[background-color] duration-200 ease-in-out motion-reduce:transition-none"
100- :class =" settings.relativeDates ? 'bg-fg' : 'bg-bg-subtle '"
100+ class =" relative inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent transition-[background-color] duration-200 ease-in-out motion-reduce:transition-none shadow "
101+ :class =" settings.relativeDates ? 'bg-fg' : 'bg-bg'"
101102 aria-hidden =" true"
102103 >
103104 <span
104105 class =" pointer-events-none inline-block h-4 w-4 rounded-full shadow-sm ring-0 transition-transform duration-200 ease-in-out motion-reduce:transition-none"
105106 :class ="
106- settings.relativeDates ? 'translate-x-4 bg-bg' : 'translate-x-0 bg-fg-muted'
107+ settings.relativeDates
108+ ? 'translate-x-4 bg-bg-subtle'
109+ : 'translate-x-0 bg-fg-muted'
107110 "
108111 />
109112 </span >
@@ -121,21 +124,47 @@ onKeyStroke(',', e => {
121124 $t('settings.include_types')
122125 }}</span >
123126 <span
124- class =" relative inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent transition-[background-color] duration-200 ease-in-out motion-reduce:transition-none"
125- :class =" settings.includeTypesInInstall ? 'bg-fg' : 'bg-bg-subtle '"
127+ class =" relative inline-flex h-5 w-9 shrink-0 items-center rounded-full border-2 border-transparent transition-[background-color] duration-200 ease-in-out motion-reduce:transition-none border border-border shadow "
128+ :class =" settings.includeTypesInInstall ? 'bg-fg' : 'bg-bg'"
126129 aria-hidden =" true"
127130 >
128131 <span
129132 class =" pointer-events-none inline-block h-4 w-4 rounded-full shadow-sm ring-0 transition-transform duration-200 ease-in-out motion-reduce:transition-none"
130133 :class ="
131134 settings.includeTypesInInstall
132- ? 'translate-x-4 bg-bg'
135+ ? 'translate-x-4 bg-bg-subtle '
133136 : 'translate-x-0 bg-fg-muted'
134137 "
135138 />
136139 </span >
137140 </button >
138141
142+ <!-- Theme selector -->
143+ <div class =" pt-2 mt-2 border-t border-border" >
144+ <div class =" px-2 py-1" >
145+ <label for =" theme-select" class =" text-xs text-fg-subtle uppercase tracking-wider" >
146+ {{ $t('settings.theme') }}
147+ </label >
148+ </div >
149+ <div class =" px-2 py-1" >
150+ <select
151+ id =" theme-select"
152+ :value =" colorMode.preference"
153+ class =" w-full bg-bg-muted border border-border rounded-md px-2 py-1.5 text-sm text-fg focus:outline-none focus:ring-2 focus:ring-fg/50 cursor-pointer"
154+ @change ="
155+ colorMode.preference = ($event.target as HTMLSelectElement).value as
156+ | 'light'
157+ | 'dark'
158+ | 'system'
159+ "
160+ >
161+ <option value =" system" >{{ $t('settings.theme_system') }}</option >
162+ <option value =" light" >{{ $t('settings.theme_light') }}</option >
163+ <option value =" dark" >{{ $t('settings.theme_dark') }}</option >
164+ </select >
165+ </div >
166+ </div >
167+
139168 <!-- Language selector -->
140169 <div class =" pt-2 mt-2 border-t border-border" >
141170 <div class =" px-2 py-1" >
0 commit comments