Files
CodeNomad/packages/ui/src/main.tsx
Shantur Rathore e30ff6358d feat(settings): move config/state to owner buckets
Add generic /api/storage config/state endpoints with merge-patch, migrate legacy YAML/JSON layout, and update UI/server to read and write owner-scoped settings. Replace config SSE events and drop /api/config routes.
2026-02-13 14:34:33 +00:00

63 lines
1.7 KiB
TypeScript

import { render } from "solid-js/web"
import App from "./App"
import { ThemeProvider } from "./lib/theme"
import { ConfigProvider } from "./stores/preferences"
import { InstanceConfigProvider } from "./stores/instance-config"
import { runtimeEnv } from "./lib/runtime-env"
import { I18nProvider } from "./lib/i18n"
import { storage } from "./lib/storage"
import "./index.css"
import "@git-diff-view/solid/styles/diff-view-pure.css"
const root = document.getElementById("root")
if (!root) {
throw new Error("Root element not found")
}
const mount = root
if (typeof document !== "undefined") {
document.documentElement.dataset.runtimeHost = runtimeEnv.host
document.documentElement.dataset.runtimePlatform = runtimeEnv.platform
}
async function bootstrap() {
if (typeof document !== "undefined") {
// renderer/index.html currently seeds a dark theme to avoid a white flash.
// Reset to CSS defaults immediately so the first render matches system
// (and then refine once persisted config loads).
document.documentElement.removeAttribute("data-theme")
try {
const uiConfig = await storage.loadConfigOwner("ui")
const theme = (uiConfig as any)?.theme ?? "system"
if (theme === "system") {
document.documentElement.removeAttribute("data-theme")
} else {
document.documentElement.setAttribute("data-theme", theme)
}
} catch {
// If config fails to load, fall back to CSS defaults.
}
}
render(
() => (
<ConfigProvider>
<InstanceConfigProvider>
<I18nProvider>
<ThemeProvider>
<App />
</ThemeProvider>
</I18nProvider>
</InstanceConfigProvider>
</ConfigProvider>
),
mount,
)
}
void bootstrap()