diff --git a/studio/frontend/src/app/router.tsx b/studio/frontend/src/app/router.tsx index 7aa19d38ba..16152ccb78 100644 --- a/studio/frontend/src/app/router.tsx +++ b/studio/frontend/src/app/router.tsx @@ -1,6 +1,7 @@ import { createRouter } from "@tanstack/react-router"; import { Route as rootRoute } from "./routes/__root"; -import { Route as dataRecipesNewRoute } from "./routes/data-recipes-new"; +import { Route as dataRecipesRoute } from "./routes/data-recipes"; +import { Route as dataRecipeRoute } from "./routes/data-recipes.$recipeId"; import { Route as chatRoute } from "./routes/chat"; import { Route as exportRoute } from "./routes/export"; import { Route as gridTestRoute } from "./routes/grid-test"; @@ -19,7 +20,8 @@ const routeTree = rootRoute.addChildren([ studioRoute, chatRoute, exportRoute, - dataRecipesNewRoute, + dataRecipesRoute, + dataRecipeRoute, ]); export const router = createRouter({ routeTree }); diff --git a/studio/frontend/src/app/routes/data-recipes-new.tsx b/studio/frontend/src/app/routes/data-recipes-new.tsx deleted file mode 100644 index b4b884b15e..0000000000 --- a/studio/frontend/src/app/routes/data-recipes-new.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import { createRoute } from "@tanstack/react-router"; -import { lazy } from "react"; -import { Route as rootRoute } from "./__root"; - -const RecipeStudioPage = lazy(() => - import("@/features/recipe-studio").then((m) => ({ - default: m.RecipeStudioPage, - })), -); - -export const Route = createRoute({ - getParentRoute: () => rootRoute, - path: "/data-recipes/new", - component: RecipeStudioPage, -}); diff --git a/studio/frontend/src/app/routes/data-recipes.$recipeId.tsx b/studio/frontend/src/app/routes/data-recipes.$recipeId.tsx new file mode 100644 index 0000000000..29c3dfe34a --- /dev/null +++ b/studio/frontend/src/app/routes/data-recipes.$recipeId.tsx @@ -0,0 +1,23 @@ +import { createRoute } from "@tanstack/react-router"; +import type { ReactElement } from "react"; +import { lazy } from "react"; +import { requireAuth } from "../auth-guards"; +import { Route as rootRoute } from "./__root"; + +const EditRecipeEditorPage = lazy(() => + import("@/features/data-recipes").then((m) => ({ + default: m.EditRecipeEditorPage, + })), +); + +export const Route = createRoute({ + getParentRoute: () => rootRoute, + path: "/data-recipes/$recipeId", + beforeLoad: () => requireAuth(), + component: DataRecipeEditorRoute, +}); + +function DataRecipeEditorRoute(): ReactElement { + const { recipeId } = Route.useParams(); + return ; +} diff --git a/studio/frontend/src/app/routes/data-recipes.tsx b/studio/frontend/src/app/routes/data-recipes.tsx new file mode 100644 index 0000000000..ff34f5530e --- /dev/null +++ b/studio/frontend/src/app/routes/data-recipes.tsx @@ -0,0 +1,17 @@ +import { createRoute } from "@tanstack/react-router"; +import { lazy } from "react"; +import { requireAuth } from "../auth-guards"; +import { Route as rootRoute } from "./__root"; + +const DataRecipesPage = lazy(() => + import("@/features/data-recipes").then((m) => ({ + default: m.DataRecipesPage, + })), +); + +export const Route = createRoute({ + getParentRoute: () => rootRoute, + path: "/data-recipes", + beforeLoad: () => requireAuth(), + component: DataRecipesPage, +}); diff --git a/studio/frontend/src/components/navbar.tsx b/studio/frontend/src/components/navbar.tsx index aee6105cf3..4fa5160c41 100644 --- a/studio/frontend/src/components/navbar.tsx +++ b/studio/frontend/src/components/navbar.tsx @@ -9,6 +9,7 @@ import { Analytics01Icon, ArrowRight01Icon, Book03Icon, + CookBookIcon, PackageIcon, ZapIcon, } from "@hugeicons/core-free-icons"; @@ -19,6 +20,7 @@ import { useState } from "react"; const NAV_ITEMS = [ { label: "Studio", href: "/studio", icon: ZapIcon, enabled: true }, + { label: "Recipes", href: "/data-recipes", icon: CookBookIcon, enabled: true }, { label: "Evaluate", href: "/evaluate", icon: Analytics01Icon, enabled: false }, { label: "Export", href: "/export", icon: PackageIcon, enabled: true }, { label: "Chat", href: "/chat", icon: AiChat02Icon, enabled: true }, @@ -65,7 +67,8 @@ export function Navbar() { {/* Center: pill nav */}