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}
+
-
+ MetaProvider>
)}
>
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 <>
-