File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ import { Portal } from 'solid-js/web';
33import { createFocusRestore } from '../lib/focus-restore' ;
44import { createFocusTrap } from '../lib/focus-trap' ;
55import { theme } from '../lib/theme' ;
6+ import { store } from '../store/store' ;
67
78interface DialogProps {
89 open : boolean ;
@@ -67,7 +68,7 @@ export function Dialog(props: DialogProps) {
6768 < Portal >
6869 < Show when = { props . open } >
6970 < div
70- class = " dialog-overlay"
71+ class = { ` dialog-overlay${ store . dialogBlur ? ' dialog-blur' : '' } ` }
7172 style = { {
7273 position : 'fixed' ,
7374 inset : '0' ,
Original file line number Diff line number Diff line change @@ -12,6 +12,7 @@ import {
1212 store ,
1313 setTerminalFont ,
1414 setThemePreset ,
15+ setDialogBlur ,
1516 setAutoTrustFolders ,
1617 setShowPlans ,
1718 setDesktopNotificationsEnabled ,
@@ -216,6 +217,33 @@ export function SettingsDialog(props: SettingsDialogProps) {
216217 </ span >
217218 </ div >
218219 </ label >
220+ < label
221+ style = { {
222+ display : 'flex' ,
223+ 'align-items' : 'center' ,
224+ gap : '10px' ,
225+ cursor : 'pointer' ,
226+ padding : '8px 12px' ,
227+ 'border-radius' : '8px' ,
228+ background : theme . bgInput ,
229+ border : `1px solid ${ theme . border } ` ,
230+ } }
231+ >
232+ < input
233+ type = "checkbox"
234+ checked = { store . dialogBlur }
235+ onChange = { ( e ) => setDialogBlur ( e . currentTarget . checked ) }
236+ style = { { 'accent-color' : theme . accent , cursor : 'pointer' } }
237+ />
238+ < div style = { { display : 'flex' , 'flex-direction' : 'column' , gap : '2px' } } >
239+ < span style = { { 'font-size' : '13px' , color : theme . fg } } >
240+ Blur background when dialogs are open
241+ </ span >
242+ < span style = { { 'font-size' : '11px' , color : theme . fgSubtle } } >
243+ Apply a backdrop blur effect behind dialog overlays
244+ </ span >
245+ </ div >
246+ </ label >
219247 </ div >
220248
221249 < div style = { { display : 'flex' , 'flex-direction' : 'column' , gap : '10px' } } >
Original file line number Diff line number Diff line change @@ -38,6 +38,7 @@ export const [store, setStore] = createStore<AppStore>({
3838 mergedLinesRemoved : 0 ,
3939 terminalFont : DEFAULT_TERMINAL_FONT ,
4040 themePreset : 'minimal' ,
41+ dialogBlur : true ,
4142 windowState : null ,
4243 autoTrustFolders : false ,
4344 showPlans : true ,
Original file line number Diff line number Diff line change @@ -48,6 +48,7 @@ export async function saveState(): Promise<void> {
4848 mergedLinesRemoved : store . mergedLinesRemoved ,
4949 terminalFont : store . terminalFont ,
5050 themePreset : store . themePreset ,
51+ dialogBlur : store . dialogBlur ,
5152 windowState : store . windowState ? { ...store . windowState } : undefined ,
5253 autoTrustFolders : store . autoTrustFolders ,
5354 showPlans : store . showPlans ,
@@ -187,6 +188,7 @@ interface LegacyPersistedState {
187188 mergedLinesRemoved ?: unknown ;
188189 terminalFont ?: unknown ;
189190 themePreset ?: unknown ;
191+ dialogBlur ?: unknown ;
190192 windowState ?: unknown ;
191193 autoTrustFolders ?: unknown ;
192194 showPlans ?: unknown ;
@@ -297,6 +299,7 @@ export async function loadState(): Promise<void> {
297299 ? raw . terminalFont
298300 : DEFAULT_TERMINAL_FONT ;
299301 s . themePreset = isLookPreset ( raw . themePreset ) ? raw . themePreset : 'minimal' ;
302+ s . dialogBlur = typeof raw . dialogBlur === 'boolean' ? raw . dialogBlur : true ;
300303 s . windowState = parsePersistedWindowState ( raw . windowState ) ;
301304 s . autoTrustFolders = typeof raw . autoTrustFolders === 'boolean' ? raw . autoTrustFolders : false ;
302305 s . showPlans = typeof raw . showPlans === 'boolean' ? raw . showPlans : true ;
Original file line number Diff line number Diff line change @@ -94,6 +94,7 @@ export {
9494 toggleArena ,
9595 setTerminalFont ,
9696 setThemePreset ,
97+ setDialogBlur ,
9798 setAutoTrustFolders ,
9899 setShowPlans ,
99100 setDesktopNotificationsEnabled ,
Original file line number Diff line number Diff line change @@ -119,6 +119,7 @@ export interface PersistedState {
119119 mergedLinesRemoved ?: number ;
120120 terminalFont ?: string ;
121121 themePreset ?: LookPreset ;
122+ dialogBlur ?: boolean ;
122123 windowState ?: PersistedWindowState ;
123124 autoTrustFolders ?: boolean ;
124125 showPlans ?: boolean ;
@@ -183,6 +184,7 @@ export interface AppStore {
183184 mergedLinesRemoved : number ;
184185 terminalFont : string ;
185186 themePreset : LookPreset ;
187+ dialogBlur : boolean ;
186188 windowState : PersistedWindowState | null ;
187189 autoTrustFolders : boolean ;
188190 showPlans : boolean ;
Original file line number Diff line number Diff line change @@ -78,6 +78,10 @@ export function setThemePreset(themePreset: LookPreset): void {
7878 setStore ( 'themePreset' , themePreset ) ;
7979}
8080
81+ export function setDialogBlur ( enabled : boolean ) : void {
82+ setStore ( 'dialogBlur' , enabled ) ;
83+ }
84+
8185export function setAutoTrustFolders ( autoTrustFolders : boolean ) : void {
8286 setStore ( 'autoTrustFolders' , autoTrustFolders ) ;
8387}
Original file line number Diff line number Diff line change @@ -645,6 +645,10 @@ textarea::placeholder {
645645.dialog-overlay {
646646 animation : fadeIn 0.16s ease;
647647 background : color-mix (in srgb, # 000 44% , transparent);
648+ backdrop-filter : saturate (1.15 );
649+ }
650+
651+ .dialog-overlay .dialog-blur {
648652 backdrop-filter : blur (6px ) saturate (1.15 );
649653}
650654
You can’t perform that action at this time.
0 commit comments