snapshot of https://github.com/mountain-loop/yaak.git (main, 2026-09-23; blobs > 131072B omitted)
Some checks failed
Lint and Test / Lint/Test (push) Has been cancelled
Generate Sponsors README / deploy (push) Has been skipped

This commit is contained in:
upstream-mirror
2026-09-23 17:39:41 +05:00
commit 906fb231cc
1544 changed files with 164131 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
import { QueryClientProvider } from "@tanstack/react-query";
import { createRootRoute, Outlet } from "@tanstack/react-router";
import { platform } from "@yaakapp-internal/platform";
import classNames from "classnames";
import { Provider as JotaiProvider } from "jotai";
import { LazyMotion, MotionConfig } from "motion/react";
import { lazy, Suspense } from "react";
import { GlobalHooks } from "../components/GlobalHooks";
import RouteError from "../components/RouteError";
import { jotaiStore } from "../lib/jotai";
import { queryClient } from "../lib/queryClient";
const Toasts = lazy(() => import("../components/Toasts").then((m) => ({ default: m.Toasts })));
const Dialogs = lazy(() => import("../components/Dialogs").then((m) => ({ default: m.Dialogs })));
const ContextMenus = lazy(() =>
import("../components/ContextMenus").then((m) => ({ default: m.ContextMenus })),
);
export const Route = createRootRoute({
component: RouteComponent,
errorComponent: RouteError,
});
const motionFeatures = () => import("framer-motion").then((mod) => mod.domAnimation);
function RouteComponent() {
return (
<JotaiProvider store={jotaiStore}>
<QueryClientProvider client={queryClient}>
<LazyMotion strict features={motionFeatures}>
<MotionConfig transition={{ duration: 0.1 }}>
<Suspense>
<Toasts />
<Dialogs />
<ContextMenus />
</Suspense>
<Layout />
<GlobalHooks />
</MotionConfig>
</LazyMotion>
</QueryClientProvider>
</JotaiProvider>
);
}
function Layout() {
return (
<div
className={classNames("w-full h-full", platform.osType() === "linux" && "border border-border-subtle")}
>
<Outlet />
</div>
);
}

View File

@@ -0,0 +1,19 @@
import { createFileRoute } from "@tanstack/react-router";
import { Onboarding } from "../components/Onboarding";
import { RedirectToLatestWorkspace } from "../components/RedirectToLatestWorkspace";
type IndexSearchSchema = {
/** Show the home screen even when workspaces exist. Set by the dev menu. */
home?: true;
};
export const Route = createFileRoute("/")({
component: RouteComponent,
validateSearch: (search: Record<string, unknown>): IndexSearchSchema =>
search.home === true ? { home: true } : {},
});
function RouteComponent() {
const { home } = Route.useSearch();
return home ? <Onboarding /> : <RedirectToLatestWorkspace />;
}

View File

@@ -0,0 +1,40 @@
import { createFileRoute } from "@tanstack/react-router";
import { Workspace } from "../../../components/Workspace";
type WorkspaceSearchSchema = {
environment_id?: string | null;
cookie_jar_id?: string | null;
} & (
| {
request_id: string;
}
| {
folder_id: string;
}
// oxlint-disable-next-line no-restricted-types -- Needed to support empty
| {}
);
export const Route = createFileRoute("/workspaces/$workspaceId/")({
component: RouteComponent,
validateSearch: (search: Record<string, unknown>): WorkspaceSearchSchema => {
const base: Pick<WorkspaceSearchSchema, "environment_id" | "cookie_jar_id"> = {
environment_id: search.environment_id as string,
cookie_jar_id: search.cookie_jar_id as string,
};
const requestId = search.request_id as string | undefined;
const folderId = search.folder_id as string | undefined;
if (requestId != null) {
return { ...base, request_id: requestId };
}
if (folderId) {
return { ...base, folder_id: folderId };
}
return base;
},
});
function RouteComponent() {
return <Workspace />;
}

View File

@@ -0,0 +1,23 @@
import { createFileRoute, Navigate, useParams } from "@tanstack/react-router";
// -----------------------------------------------------------------------------------
// IMPORTANT: This is a deprecated route. Since the active request is optional, it was
// moved from a path param to a query parameter. This route does a redirect to the
// parent, while preserving the active request.
export const Route = createFileRoute("/workspaces/$workspaceId/requests/$requestId")({
component: RouteComponent,
});
function RouteComponent() {
const { workspaceId, requestId } = useParams({
from: "/workspaces/$workspaceId/requests/$requestId",
});
return (
<Navigate
to="/workspaces/$workspaceId"
params={{ workspaceId }}
search={(prev) => ({ ...prev, requestId })}
/>
);
}

View File

@@ -0,0 +1,19 @@
import { createFileRoute } from "@tanstack/react-router";
import type { SettingsTab } from "../../../components/Settings/Settings";
import Settings from "../../../components/Settings/Settings";
interface SettingsSearchSchema {
tab?: SettingsTab;
}
export const Route = createFileRoute("/workspaces/$workspaceId/settings")({
component: RouteComponent,
validateSearch: (search: Record<string, unknown>): SettingsSearchSchema => ({
tab: (search.tab ?? "general") as SettingsTab,
}),
});
function RouteComponent() {
const { tab } = Route.useSearch();
return <Settings tab={tab} />;
}

View File

@@ -0,0 +1,10 @@
import { createFileRoute } from "@tanstack/react-router";
import { RedirectToLatestWorkspace } from "../../components/RedirectToLatestWorkspace";
export const Route = createFileRoute("/workspaces/")({
component: RouteComponent,
});
function RouteComponent() {
return <RedirectToLatestWorkspace />;
}