some restructuring and added a color-scheme-picker

This commit is contained in:
Chris Kruining 2024-10-28 14:15:41 +01:00
parent c02fb2d924
commit fa9264326b
No known key found for this signature in database
GPG key ID: EB894A3560CCCAD2
11 changed files with 137 additions and 103 deletions

View file

@ -0,0 +1,4 @@
.picker {
border: none;
background-color: var(--surface-3);
}

View file

@ -0,0 +1,43 @@
import { Accessor, Component, createEffect, createSignal, For, Setter } from "solid-js";
import css from './colorschemepicker.module.css';
export enum ColorScheme {
Auto = 'light dark',
Light = 'light',
Dark = 'dark',
}
const colorSchemeEntries = [
[ColorScheme.Auto, 'Auto'],
[ColorScheme.Light, 'Light'],
[ColorScheme.Dark, 'Dark'],
] as const;
interface ColorSchemePickerProps {
value?: Setter<ColorScheme> | [Accessor<ColorScheme>, Setter<ColorScheme>];
}
export const ColorSchemePicker: Component<ColorSchemePickerProps> = (props) => {
const [value, setValue] = createSignal<ColorScheme>(ColorScheme.Auto);
createEffect(() => {
const currentValue = value();
const setter = props.value instanceof Array ? props.value[1] : props.value;
if (!setter) {
return;
}
setter(currentValue);
});
return <select class={css.picker} name="color-scheme-picker" value={value()} onInput={(e) => {
if (e.target.value !== value()) {
setValue(e.target.value as any);
}
}}>
<For each={colorSchemeEntries}>{
([value, label]) => <option value={value}>{label}</option>
}</For>
</select>;
};

View file

@ -19,6 +19,7 @@
color: var(--text-2);
padding: var(--padding-m) var(--padding-l);
border: none;
cursor: pointer;
&.active {
background-color: var(--surface-3);