diff --git a/bun.lockb b/bun.lockb index e8be32d..9652a01 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index aa19ecb..8730fd2 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,13 @@ { "name": "calque", "dependencies": { + "@solid-primitives/i18n": "^2.1.1", + "@solid-primitives/storage": "^4.2.1", "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.2", "@solidjs/start": "^1.0.10", "dexie": "^4.0.10", + "flag-icons": "^7.2.3", "iterator-helpers-polyfill": "^3.0.1", "sitemap": "^8.0.0", "solid-icons": "^1.1.0", diff --git a/src/app.tsx b/src/app.tsx index 977a2cf..f47cf2b 100644 --- a/src/app.tsx +++ b/src/app.tsx @@ -2,8 +2,9 @@ import { MetaProvider } from "@solidjs/meta"; import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; -import "./app.css"; import { ThemeProvider } from "./components/colorschemepicker"; +import { I18nProvider } from "./features/i18n"; +import "./app.css"; export default function App() { return ( @@ -11,9 +12,11 @@ export default function App() { root={props => ( - {props.children} + + {props.children} + - + )} > diff --git a/src/components/colorschemepicker.module.css b/src/components/colorschemepicker.module.css index af89340..66baa23 100644 --- a/src/components/colorschemepicker.module.css +++ b/src/components/colorschemepicker.module.css @@ -1,26 +1,5 @@ .picker { - display: flex; - flex-flow: row; - align-items: center; - background-color: inherit; - border: 1px solid transparent; - border-radius: var(--radii-m); - padding: var(--padding-s); - - & select { - flex: 1 1 auto; - border: none; - background-color: inherit; - border-radius: var(--radii-m); - - &:focus { - outline: none; - } - } - - &:has(:focus-visible) { - border-color: var(--info); - } + grid-template-columns: auto 1fr; } .hue { diff --git a/src/components/colorschemepicker.tsx b/src/components/colorschemepicker.tsx index 6b3fb66..2ca0d69 100644 --- a/src/components/colorschemepicker.tsx +++ b/src/components/colorschemepicker.tsx @@ -1,9 +1,10 @@ -import { Component, createContext, createEffect, createResource, For, ParentComponent, Show, Suspense, useContext } from "solid-js"; -import css from './colorschemepicker.module.css'; -import { CgDarkMode } from "solid-icons/cg"; +import { Component, createContext, createEffect, createResource, Match, ParentComponent, Show, Suspense, Switch, useContext } from "solid-js"; import { action, query, useAction } from "@solidjs/router"; import { useSession } from "vinxi/http"; import { createStore } from "solid-js/store"; +import { ComboBox } from "./combobox"; +import { WiMoonAltFull, WiMoonAltNew, WiMoonAltFirstQuarter } from "solid-icons/wi"; +import css from './colorschemepicker.module.css'; export enum ColorScheme { Auto = 'light dark', @@ -11,7 +12,7 @@ export enum ColorScheme { Dark = 'dark', } -const colorSchemes = Object.entries(ColorScheme) as readonly [keyof typeof ColorScheme, ColorScheme][]; +const colorSchemes: Record = Object.fromEntries(Object.entries(ColorScheme).map(([k, v]) => [v, k] as const)) as any; export interface State { colorScheme: ColorScheme; @@ -88,20 +89,17 @@ export const ColorSchemePicker: Component = (props) => { const { theme, setColorScheme, setHue } = useStore(); return <> -