Files
OpenResearch/ui/index.html
T
clover ea41b76ee1 feat: adapt dashboard workspace for mobile (#818)
Supersedes #382. Rebuild mobile navigation and full-width workspace panes.

Assisted-by: gpt-6.1-sol
Assisted-by: gpt-6.1-terra
Assisted-by: gpt-6-astra
2026-10-28 22:27:02 +00:00

61 lines
3.4 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>OpenResearch</title>
<script>
// Resolve the theme before first paint to avoid a flash of the wrong palette.
// Storage key and resolution must match src/theme.ts.
(function () {
try {
var pref = localStorage.getItem("orx:theme") || "system";
var dark =
pref === "dark" ||
(pref !== "light" &&
window.matchMedia("(prefers-color-scheme: dark)").matches);
document.documentElement.dataset.theme = dark ? "dark" : "light";
} catch (e) {
document.documentElement.dataset.theme = "light";
}
})();
// Resolve language before first paint; keep supported in sync with project.inlang/settings.json.
(function () {
var saved = null;
try { saved = localStorage.getItem("orx:locale"); } catch (e) {}
var browserPreferences = navigator.languages || [navigator.language];
var supported = ["en", "zh-CN", "fa", "ar", "es", "hi", "pl"];
var match = function (tag) {
if (!tag) return null;
var normalized = String(tag).toLowerCase();
for (var j = 0; j < supported.length; j += 1) {
if (supported[j].toLowerCase() === normalized) return supported[j];
}
return null;
};
var locale = match(saved);
for (var i = 0; !locale && i < browserPreferences.length; i += 1) {
var preference = browserPreferences[i];
locale = match(preference) || match(String(preference).split("-")[0]);
}
locale = locale || "en";
document.documentElement.lang = locale;
document.documentElement.dir = "ltr";
})();
</script>
<style>
/* Pre-CSS background; keep in sync with --base in src/theme.css. */
html { background: #ffffff; }
html[data-theme="dark"] { background: #181818; }
</style>
</head>
<body>
<div
id="root"
class="[&_:where([data-tip])]:relative [&_:where([data-tip])::after]:content-[attr(data-tip)] [&_:where([data-tip])::after]:absolute [&_:where([data-tip])::after]:top-[calc(100%_+_6px)] [&_:where([data-tip])::after]:left-1/2 [&_:where([data-tip])::after]:-translate-x-1/2 [&_:where([data-tip])::after]:w-max [&_:where([data-tip])::after]:max-w-none [&_:where([data-tip])::after]:bg-text [&_:where([data-tip])::after]:text-background [&_:where([data-tip])::after]:text-xs [&_:where([data-tip])::after]:font-medium [&_:where([data-tip])::after]:leading-none [&_:where([data-tip])::after]:py-[5px] [&_:where([data-tip])::after]:px-2 [&_:where([data-tip])::after]:rounded-sm [&_:where([data-tip])::after]:whitespace-nowrap [&_:where([data-tip])::after]:opacity-0 [&_:where([data-tip])::after]:invisible [&_:where([data-tip])::after]:pointer-events-none [&_:where([data-tip])::after]:z-[9999] [&_:where([data-tip]):is(:hover,:focus-visible)::after]:opacity-100 [&_:where([data-tip]):is(:hover,:focus-visible)::after]:visible [&_[data-tip-align='start']::after]:start-0 [&_[data-tip-align='start']::after]:translate-none [&_[data-tip-align='end']::after]:end-0 [&_[data-tip-align='end']::after]:start-auto [&_[data-tip-align='end']::after]:translate-none"
></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>