Skip to content

Commit 5289ed5

Browse files
committed
settings reset, tab title
1 parent 9ee56f6 commit 5289ed5

File tree

3 files changed

+72
-7
lines changed

3 files changed

+72
-7
lines changed

src/App.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@
3636
applyTheme(settings.currentTheme)
3737
})
3838
39+
$effect(() => {
40+
document.title = settings.tabTitle || '~'
41+
})
42+
3943
$effect(() => {
4044
saveSettings(settings)
4145
})

src/lib/components/Settings.svelte

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<script>
22
import { fade, fly } from 'svelte/transition'
3-
import { saveSettings, settings } from '../settings-store.svelte.js'
3+
import {
4+
saveSettings,
5+
settings,
6+
resetSettings,
7+
} from '../settings-store.svelte.js'
48
import { themeNames, themes } from '../themes.js'
59
import RadioButton from './RadioButton.svelte'
610
@@ -27,6 +31,15 @@
2731
handleClose()
2832
}
2933
}
34+
35+
function handleReset() {
36+
if (
37+
confirm('are you sure you want to reset all settings to default?')
38+
) {
39+
resetSettings()
40+
saveSettings(settings)
41+
}
42+
}
3043
</script>
3144

3245
<svelte:window on:keydown={handleKeydown} />
@@ -88,7 +101,17 @@
88101
id="font"
89102
type="text"
90103
bind:value={settings.font}
91-
placeholder="e.g., Geist Mono Variable, Monaco, Courier New"
104+
placeholder="Geist Mono Variable"
105+
/>
106+
</div>
107+
108+
<div class="group">
109+
<label for="tab-title">tab title</label>
110+
<input
111+
id="tab-title"
112+
type="text"
113+
bind:value={settings.tabTitle}
114+
placeholder="~"
92115
/>
93116
</div>
94117

@@ -209,13 +232,16 @@
209232
</div>
210233
</div>
211234
<div class="version">
212-
re-start
213-
{#if version}v{version}
214-
{/if} • made with ❤️ by
235+
<a href="https://github.com/refact0r/re-start" target="_blank">
236+
re-start
237+
{#if version}v{version}
238+
{/if}</a
239+
>
240+
• made with ❤️ by
215241
<a href="https://refact0r.dev" target="_blank">refact0r</a>
216242
217-
<a href="https://github.com/refact0r/re-start" target="_blank"
218-
>github</a
243+
<button class="reset-link" onclick={handleReset}
244+
>reset settings</button
219245
>
220246
</div>
221247
</div>
@@ -306,6 +332,14 @@
306332
}
307333
.version {
308334
color: var(--txt-3);
335+
336+
a {
337+
text-decoration: underline;
338+
}
339+
340+
a:hover {
341+
color: var(--txt-2);
342+
}
309343
}
310344
.theme-grid {
311345
display: grid;
@@ -330,4 +364,17 @@
330364
display: flex;
331365
gap: 3ch;
332366
}
367+
.reset-link {
368+
background: none;
369+
border: none;
370+
color: var(--txt-3);
371+
cursor: pointer;
372+
padding: 0;
373+
font-size: inherit;
374+
font-family: inherit;
375+
text-decoration: underline;
376+
}
377+
.reset-link:hover {
378+
color: var(--txt-2);
379+
}
333380
</style>

src/lib/settings-store.svelte.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ let defaultSettings = {
22
timeFormat: '12hr',
33
font: 'Geist Mono Variable',
44
currentTheme: 'default',
5+
tabTitle: '~',
56
todoistApiToken: '',
67
latitude: null,
78
longitude: null,
@@ -51,4 +52,17 @@ export function saveSettings(settings) {
5152
}
5253
}
5354

55+
export function resetSettings() {
56+
try {
57+
localStorage.removeItem('settings')
58+
// Reset the settings object to default
59+
const newSettings = loadSettings()
60+
Object.assign(settings, newSettings)
61+
return true
62+
} catch (error) {
63+
console.error('failed to reset settings:', error)
64+
return false
65+
}
66+
}
67+
5468
export const settings = $state(loadSettings())

0 commit comments

Comments
 (0)