finally have some more fixes for the styling

This commit is contained in:
Chris Kruining 2024-12-02 13:08:23 +01:00
parent ecf7b0df20
commit aee0523adc
No known key found for this signature in database
GPG key ID: EB894A3560CCCAD2
6 changed files with 28 additions and 36 deletions

View file

@ -76,8 +76,8 @@ export default defineConfig({
}, },
server: { server: {
preset: 'bun', preset: 'bun',
prerender: { // prerender: {
crawlLinks: true, // crawlLinks: true,
}, // },
}, },
}); });

View file

@ -2,13 +2,14 @@
display: flex; display: flex;
flex-flow: row; flex-flow: row;
align-items: center; align-items: center;
background-color: inherit;
border: 1px solid transparent; border: 1px solid transparent;
border-radius: var(--radii-m); border-radius: var(--radii-m);
padding: var(--padding-s); padding: var(--padding-s);
& select { & select {
border: none; border: none;
background-color: transparent; background-color: inherit;
border-radius: var(--radii-m); border-radius: var(--radii-m);
&:focus { &:focus {

View file

@ -1,9 +1,9 @@
import { Accessor, Component, createContext, createEffect, createMemo, createResource, For, ParentComponent, Setter, Show, Suspense, useContext } from "solid-js"; import { Component, createContext, createEffect, createResource, For, ParentComponent, Show, Suspense, useContext } from "solid-js";
import css from './colorschemepicker.module.css'; import css from './colorschemepicker.module.css';
import { CgDarkMode } from "solid-icons/cg"; import { CgDarkMode } from "solid-icons/cg";
import { action, createAsyncStore, query, useAction } from "@solidjs/router"; import { action, query, useAction } from "@solidjs/router";
import { useSession } from "vinxi/http"; import { useSession } from "vinxi/http";
import { createStore, reconcile, ReconcileOptions, SetStoreFunction } from "solid-js/store"; import { createStore } from "solid-js/store";
export enum ColorScheme { export enum ColorScheme {
Auto = 'light dark', Auto = 'light dark',
@ -38,7 +38,7 @@ const setState = action(async (state: State) => {
'use server'; 'use server';
const session = await getSession(); const session = await getSession();
await session.update(state); await session.update(prev => ({ ...prev, ...state }));
}, 'color-scheme'); }, 'color-scheme');
interface ThemeContextType { interface ThemeContextType {
@ -62,7 +62,7 @@ export const useTheme = () => {
}; };
export const ThemeProvider: ParentComponent = (props) => { export const ThemeProvider: ParentComponent = (props) => {
const [state, { mutate }] = createResource<State>(() => getState(), { deferStream: true, initialValue: { colorScheme: ColorScheme.Auto, hue: 0 } }); const [state, { mutate }] = createResource<State>(() => getState(), { deferStream: true });
const updateState = useAction(setState); const updateState = useAction(setState);
return <Suspense> return <Suspense>
@ -75,8 +75,8 @@ export const ThemeProvider: ParentComponent = (props) => {
return <ThemeContext.Provider value={{ return <ThemeContext.Provider value={{
get theme() { return store; }, get theme() { return store; },
setColorScheme(colorScheme: ColorScheme) { updateState(mutate(prev => ({ ...prev, colorScheme }))) }, setColorScheme(colorScheme: ColorScheme) { updateState(mutate(prev => ({ colorScheme, hue: prev?.hue ?? 0 }))) },
setHue(hue: number) { updateState(mutate(prev => ({ ...prev, hue }))) }, setHue(hue: number) { updateState(mutate(prev => ({ hue, colorScheme: prev?.colorScheme ?? ColorScheme.Auto }))) },
}}> }}>
{props.children} {props.children}
</ThemeContext.Provider>; </ThemeContext.Provider>;

View file

@ -26,9 +26,8 @@ export default createHandler(({ nonce }) => {
); );
}, event => { }, event => {
const nonce = crypto.randomUUID(); const nonce = crypto.randomUUID();
const isDev = process.env.NODE_ENV === 'development';
const base = `'self' 'nonce-${nonce}' ${isDev ? `'unsafe-eval'` : ''}`; const base = `'self' 'nonce-${nonce}' 'unsafe-eval'`;
const policies = { const policies = {
default: base, default: base,

View file

@ -13,9 +13,7 @@ import css from "./editor.module.css";
const event = getRequestEvent(); const event = getRequestEvent();
export const route: RouteDefinition = { export const route: RouteDefinition = {
preload: ({ params, location, intent }) => { preload: () => {
console.log();
return getState(); return getState();
}, },
}; };
@ -25,6 +23,11 @@ export default function Editor(props: ParentProps) {
const themeMenuId = createUniqueId(); const themeMenuId = createUniqueId();
const [commandPalette, setCommandPalette] = createSignal<CommandPaletteApi>(); const [commandPalette, setCommandPalette] = createSignal<CommandPaletteApi>();
const lightness = createMemo(() => {
const scheme = theme.colorScheme === ColorScheme.Auto ? event?.request.headers.get('Sec-CH-Prefers-Color-Scheme') : theme.colorScheme;
return scheme === ColorScheme.Light ? .9 : .2;
});
const commands = [ const commands = [
createCommand('open command palette', () => { createCommand('open command palette', () => {
@ -44,8 +47,9 @@ export default function Editor(props: ParentProps) {
transition(() => { e.retry(true) }) transition(() => { e.retry(true) })
}); });
console.log('server?', theme.colorScheme, theme.hue);
createEffect(() => { createEffect(() => {
console.log(theme.hue); console.log(theme.colorScheme, theme.hue);
}); });
return <MenuProvider commands={commands}> return <MenuProvider commands={commands}>
@ -53,26 +57,14 @@ export default function Editor(props: ParentProps) {
<Title>Calque</Title> <Title>Calque</Title>
<Show when={theme.colorScheme || theme.hue ? theme : undefined}>{ <Meta name="color-scheme" content={theme.colorScheme} />
theme => { <Meta name="theme-color" content={`oklch(${lightness()} .02 ${theme.hue})`} />
const lightness = createMemo(() => {
const scheme = theme().colorScheme === ColorScheme.Auto ? event?.request.headers.get('Sec-CH-Prefers-Color-Scheme') : theme().colorScheme;
return scheme === ColorScheme.Light ? .9 : .2; <Style>{`
}); :root {
--hue: ${theme.hue}deg !important;
return <>
<Meta name="color-scheme" content={theme().colorScheme} />
<Meta name="theme-color" content={`oklch(${lightness()} .02 ${theme().hue})`} />
<Style>{`
:root {
--hue: ${theme().hue}deg !important;
}
`}</Style>
</>;
} }
}</Show> `}</Style>
<Link rel="icon" href="/images/favicon.dark.svg" media="screen and (prefers-color-scheme: dark)" /> <Link rel="icon" href="/images/favicon.dark.svg" media="screen and (prefers-color-scheme: dark)" />
<Link rel="icon" href="/images/favicon.light.svg" media="screen and (prefers-color-scheme: light)" /> <Link rel="icon" href="/images/favicon.light.svg" media="screen and (prefers-color-scheme: light)" />

View file

@ -65,7 +65,7 @@
@media (display-mode: window-controls-overlay) { @media (display-mode: window-controls-overlay) {
& { & {
color: light-dark(#0005, #fff5); color: light-dark(#0008, #fff8);
} }
} }
} }