Files
cobalt/web/src/components/buttons/SettingsContextButton.svelte
wukko 4625939a87 web: data-driven switcher & save mode switcher
also:
- disabled ssr to enable localstorage
- removed the workaround for hover, as it looks bad
2024-06-19 23:04:09 +06:00

33 lines
860 B
Svelte

<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>