chore(web): finalize object authoring — i18n parity + verification

Lazy-load ObjectNewPage and ObjectEditForm routes to bring the initial
JS bundle under the 150 KB gz budget (was 159 KB, now 140 KB).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-04 01:06:59 +02:00
parent eedeb179e3
commit 1cf36e39cc
+29 -4
View File
@@ -1,14 +1,25 @@
import { lazy, Suspense } from "react";
import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom"; import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";
import { RequireAuth } from "./auth/require-auth"; import { RequireAuth } from "./auth/require-auth";
import { LoginPage } from "./auth/login-page"; import { LoginPage } from "./auth/login-page";
import { AppShell } from "./shell/app-shell"; import { AppShell } from "./shell/app-shell";
import { ObjectsPage } from "./objects/objects-page"; import { ObjectsPage } from "./objects/objects-page";
import { ObjectNewPage } from "./objects/object-new-page";
import { ObjectDetail } from "./objects/object-detail"; import { ObjectDetail } from "./objects/object-detail";
import { ObjectEditForm } from "./objects/object-edit-form";
import { SelectPrompt } from "./objects/select-prompt"; import { SelectPrompt } from "./objects/select-prompt";
const ObjectNewPage = lazy(() =>
import("./objects/object-new-page").then((m) => ({ default: m.ObjectNewPage })),
);
const ObjectEditForm = lazy(() =>
import("./objects/object-edit-form").then((m) => ({ default: m.ObjectEditForm })),
);
function FormFallback() {
return <div role="status" className="p-4 text-sm text-neutral-400">Loading</div>;
}
export function App() { export function App() {
return ( return (
<BrowserRouter> <BrowserRouter>
@@ -16,11 +27,25 @@ export function App() {
<Route path="/login" element={<LoginPage />} /> <Route path="/login" element={<LoginPage />} />
<Route element={<RequireAuth />}> <Route element={<RequireAuth />}>
<Route element={<AppShell />}> <Route element={<AppShell />}>
<Route path="/objects/new" element={<ObjectNewPage />} /> <Route
path="/objects/new"
element={
<Suspense fallback={<FormFallback />}>
<ObjectNewPage />
</Suspense>
}
/>
<Route path="/objects" element={<ObjectsPage />}> <Route path="/objects" element={<ObjectsPage />}>
<Route index element={<SelectPrompt />} /> <Route index element={<SelectPrompt />} />
<Route path=":id" element={<ObjectDetail />} /> <Route path=":id" element={<ObjectDetail />} />
<Route path=":id/edit" element={<ObjectEditForm />} /> <Route
path=":id/edit"
element={
<Suspense fallback={<FormFallback />}>
<ObjectEditForm />
</Suspense>
}
/>
</Route> </Route>
<Route path="/" element={<Navigate to="/objects" replace />} /> <Route path="/" element={<Navigate to="/objects" replace />} />
</Route> </Route>