web: data-driven switcher & save mode switcher
also: - disabled ssr to enable localstorage - removed the workaround for hover, as it looks bad
This commit is contained in:
32
web/src/components/buttons/SettingsContextButton.svelte
Normal file
32
web/src/components/buttons/SettingsContextButton.svelte
Normal file
@@ -0,0 +1,32 @@
|
||||
<script
|
||||
lang="ts"
|
||||
generics="
|
||||
Context extends Exclude<keyof CobaltSettings, 'schemaVersion'>,
|
||||
Id extends keyof CobaltSettings[Context],
|
||||
Key extends CobaltSettings[Context][Id]
|
||||
"
|
||||
>
|
||||
import settings, { updateSetting } from "$lib/settings";
|
||||
import type { CobaltSettings } from "$lib/types/settings";
|
||||
|
||||
export let settingContext: Context;
|
||||
export let settingId: Id;
|
||||
export let settingKey: Key;
|
||||
|
||||
$: setting = $settings[settingContext][settingId];
|
||||
$: isSelected = setting === settingKey;
|
||||
</script>
|
||||
|
||||
<button
|
||||
id="setting-button-{settingContext}-{String(settingId)}-{settingKey}"
|
||||
class="button"
|
||||
class:selected={isSelected}
|
||||
on:click={() =>
|
||||
updateSetting({
|
||||
[settingContext]: {
|
||||
[settingId]: settingKey,
|
||||
},
|
||||
})}
|
||||
>
|
||||
<slot></slot>
|
||||
</button>
|
||||
Reference in New Issue
Block a user