11import { RotateCcwIcon } from "lucide-react" ;
2- import { Outlet , createFileRoute , redirect } from "@tanstack/react-router" ;
2+ import { Outlet , createFileRoute , redirect , useLocation } from "@tanstack/react-router" ;
33import { useEffect , useState } from "react" ;
44
55import { useSettingsRestore } from "../components/settings/SettingsPanels" ;
66import { Button } from "../components/ui/button" ;
77import { SidebarInset , SidebarTrigger } from "../components/ui/sidebar" ;
88import { isElectron } from "../env" ;
99
10+ function RestoreDefaultsButton ( { onRestored } : { onRestored : ( ) => void } ) {
11+ const { changedSettingLabels, restoreDefaults } = useSettingsRestore ( onRestored ) ;
12+
13+ return (
14+ < Button
15+ size = "xs"
16+ variant = "outline"
17+ disabled = { changedSettingLabels . length === 0 }
18+ onClick = { ( ) => void restoreDefaults ( ) }
19+ >
20+ < RotateCcwIcon className = "size-3.5" />
21+ Restore defaults
22+ </ Button >
23+ ) ;
24+ }
25+
1026function SettingsContentLayout ( ) {
27+ const location = useLocation ( ) ;
1128 const [ restoreSignal , setRestoreSignal ] = useState ( 0 ) ;
12- const { changedSettingLabels, restoreDefaults } = useSettingsRestore ( ( ) =>
13- setRestoreSignal ( ( value ) => value + 1 ) ,
14- ) ;
29+ const showRestoreDefaults = location . pathname === "/settings/general" ;
30+ const handleRestored = ( ) => setRestoreSignal ( ( value ) => value + 1 ) ;
1531
1632 useEffect ( ( ) => {
1733 const onKeyDown = ( event : KeyboardEvent ) => {
@@ -33,20 +49,14 @@ function SettingsContentLayout() {
3349 < div className = "flex min-h-0 min-w-0 flex-1 flex-col bg-background text-foreground" >
3450 { ! isElectron && (
3551 < header className = "border-b border-border px-3 py-2 sm:px-5" >
36- < div className = "flex items-center gap-2" >
52+ < div className = "flex min-h-7 items-center gap-2 sm:min-h-6 " >
3753 < SidebarTrigger className = "size-7 shrink-0 md:hidden" />
3854 < span className = "text-sm font-medium text-foreground" > Settings</ span >
39- < div className = "ms-auto flex items-center gap-2" >
40- < Button
41- size = "xs"
42- variant = "outline"
43- disabled = { changedSettingLabels . length === 0 }
44- onClick = { ( ) => void restoreDefaults ( ) }
45- >
46- < RotateCcwIcon className = "size-3.5" />
47- Restore defaults
48- </ Button >
49- </ div >
55+ { showRestoreDefaults ? (
56+ < div className = "ms-auto flex items-center gap-2" >
57+ < RestoreDefaultsButton onRestored = { handleRestored } />
58+ </ div >
59+ ) : null }
5060 </ div >
5161 </ header >
5262 ) }
@@ -56,17 +66,11 @@ function SettingsContentLayout() {
5666 < span className = "text-xs font-medium tracking-wide text-muted-foreground/70" >
5767 Settings
5868 </ span >
59- < div className = "ms-auto flex items-center gap-2" >
60- < Button
61- size = "xs"
62- variant = "outline"
63- disabled = { changedSettingLabels . length === 0 }
64- onClick = { ( ) => void restoreDefaults ( ) }
65- >
66- < RotateCcwIcon className = "size-3.5" />
67- Restore defaults
68- </ Button >
69- </ div >
69+ { showRestoreDefaults ? (
70+ < div className = "ms-auto flex items-center gap-2" >
71+ < RestoreDefaultsButton onRestored = { handleRestored } />
72+ </ div >
73+ ) : null }
7074 </ div >
7175 ) }
7276
0 commit comments