Skip to content
124 changes: 120 additions & 4 deletions ecosystem-explorer/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,61 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { BrowserRouter } from "react-router-dom";
import { LegacyApp } from "@/LegacyApp";
import { V1App } from "@/v1";
import { lazy, Suspense } from "react";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { Header } from "@/components/layout/header";
import { Footer } from "@/components/layout/footer";
import { isEnabled } from "@/lib/feature-flags";
import { ErrorBoundary } from "@/components/ui/error-boundary";

const HomePage = lazy(() =>
import("@/features/home/home-page").then((m) => ({ default: m.HomePage }))
);
const JavaAgentPage = lazy(() =>
import("@/features/java-agent/java-agent-page").then((m) => ({ default: m.JavaAgentPage }))
);
const CollectorPage = lazy(() => import("@/features/collector/collector-page"));
const CollectorComponentsPage = lazy(() =>
import("@/features/collector/collector-components-page").then((m) => ({
default: m.CollectorComponentsPage,
}))
);
const CollectorDetailPage = lazy(() =>
import("@/features/collector/collector-detail-page").then((m) => ({
default: m.CollectorDetailPage,
}))
);
const NotFoundPage = lazy(() =>
import("@/features/not-found/not-found-page").then((m) => ({ default: m.NotFoundPage }))
);
const JavaInstrumentationListPage = lazy(() =>
import("@/features/java-agent/java-instrumentation-list-page").then((m) => ({
default: m.JavaInstrumentationListPage,
}))
);
const JavaConfigurationListPage = lazy(() =>
import("@/features/java-agent/java-configuration-list-page").then((m) => ({
default: m.JavaConfigurationListPage,
}))
);
const JavaReleaseComparisonPage = lazy(() =>
import("@/features/java-agent/java-release-comparison-page").then((m) => ({
default: m.JavaReleaseComparisonPage,
}))
);
const InstrumentationDetailPage = lazy(() =>
import("@/features/java-agent/instrumentation-detail-page").then((m) => ({
default: m.InstrumentationDetailPage,
}))
);
const ConfigurationBuilderPage = lazy(() =>
import("@/features/java-agent/configuration/configuration-builder-page").then((m) => ({
default: m.ConfigurationBuilderPage,
}))
);
const AboutPage = lazy(() =>
import("@/features/about/about-page").then((m) => ({ default: m.AboutPage }))
);

/*
* Single V1_REDESIGN boundary read. See
Expand All @@ -25,5 +76,70 @@ import { isEnabled } from "@/lib/feature-flags";
* bundle selection is driven by netlify.toml's `feat/84-*` branch pattern.
*/
export default function App() {
return <BrowserRouter>{isEnabled("V1_REDESIGN") ? <V1App /> : <LegacyApp />}</BrowserRouter>;
return (
<BrowserRouter>
<div className="bg-background flex min-h-screen flex-col">
<Header />
<main className="flex-1 pt-16">
Comment on lines +79 to +83
<ErrorBoundary>
<Suspense
fallback={
<div
className="flex min-h-[400px] items-center justify-center"
role="status"
aria-live="polite"
>
<div className="text-muted-foreground text-sm font-medium">Loading...</div>
</div>
}
>
<Routes>
<Route path="/" element={<HomePage />} />
<Route path="/java-agent" element={<JavaAgentPage />} />
<Route
path="/java-agent/instrumentation"
element={<JavaInstrumentationListPage />}
/>
Comment thread
vitorvasc marked this conversation as resolved.
<Route
path="/java-agent/instrumentation/:version"
element={<JavaInstrumentationListPage />}
/>
<Route
path="/java-agent/instrumentation/:version/:name"
element={<InstrumentationDetailPage />}
/>
<Route
path="/java-agent/configuration"
element={<JavaConfigurationListPage />}
/>
{isEnabled("JAVA_RELEASE_COMPARISON") && (
<Route
path="/java-agent/releases"
element={<JavaReleaseComparisonPage />}
/>
)}
<Route
path="/java-agent/configuration/builder"
element={<ConfigurationBuilderPage />}
/>
<Route path="/collector" element={<CollectorPage />} />
<Route path="/collector/components" element={<CollectorComponentsPage />} />
<Route
path="/collector/components/:version"
element={<CollectorComponentsPage />}
/>
<Route
path="/collector/components/:version/:id"
element={<CollectorDetailPage />}
/>
<Route path="/about" element={<AboutPage />} />
<Route path="*" element={<NotFoundPage />} />
</Routes>
</Suspense>
</ErrorBoundary>
</main>
<Footer />
</div>
</BrowserRouter>
);
}
Loading
Loading