({ xs: theme.spacing(2), sm: theme.spacing(3) }),
+ gridAutoRows: "max-content",
+ minHeight: fullScreenHeight > 0 ? `${fullScreenHeight}px` : "100vh",
+
+ pt: (theme) => `max(env(safe-area-inset-top), ${theme.spacing(1)})`,
+ pb: (theme) => `max(env(safe-area-inset-bottom), ${theme.spacing(1)})`,
+ pl: (theme) => `max(env(safe-area-inset-left), ${theme.spacing(1)})`,
+ pr: (theme) => `max(env(safe-area-inset-right), ${theme.spacing(1)})`,
+ ...props.sx,
+ }}
+ />
+ );
+}
diff --git a/src/components/Auth/AuthLayout.tsx b/src/components/Auth/AuthLayout.tsx
index a095298d..80f625aa 100644
--- a/src/components/Auth/AuthLayout.tsx
+++ b/src/components/Auth/AuthLayout.tsx
@@ -7,14 +7,15 @@ import {
LinkProps,
} from "@mui/material";
import { alpha } from "@mui/material/styles";
-import BrandedBackground from "assets/BrandedBackground";
+import BrandedBackground, { Wrapper } from "assets/BrandedBackground";
import Logo from "assets/Logo";
import { useAppContext } from "contexts/AppContext";
-import { homepage } from "@root/package.json";
+import { EXTERNAL_LINKS } from "constants/externalLinks";
export interface IAuthLayoutProps {
hideLogo?: boolean;
+ hideProject?: boolean;
title?: React.ReactNode;
description?: React.ReactNode;
children: React.ReactNode;
@@ -23,6 +24,7 @@ export interface IAuthLayoutProps {
export default function AuthLayout({
hideLogo,
+ hideProject,
title,
description,
children,
@@ -39,7 +41,7 @@ export default function AuthLayout({
};
return (
-
+
theme.spacing(2) } : {}}>
@@ -115,43 +121,42 @@ export default function AuthLayout({
Project: {projectId}
-
- {homepage.split("//").pop()?.replace(/\//g, "")}
+
+ {EXTERNAL_LINKS.homepage.split("//").pop()?.replace(/\//g, "")}
-
+
Discord
-
+
Twitter
-
+
Docs
-
+
Privacy
-
+
Terms
-
+
);
}
diff --git a/src/components/Auth/MarketingBanner.tsx b/src/components/Auth/MarketingBanner.tsx
new file mode 100644
index 00000000..bc0f91d7
--- /dev/null
+++ b/src/components/Auth/MarketingBanner.tsx
@@ -0,0 +1,94 @@
+import { Stack, Paper, Typography, Button } from "@mui/material";
+import { alpha } from "@mui/material/styles";
+import DiscordIcon from "assets/icons/Discord";
+import TwitterIcon from "@mui/icons-material/Twitter";
+
+import Logo from "assets/Logo";
+import { EXTERNAL_LINKS } from "constants/externalLinks";
+
+export default function MarketingBanner() {
+ return (
+ alpha(theme.palette.background.paper, 0.5),
+ backdropFilter: "blur(20px) saturate(150%)",
+
+ pt: (theme) => `max(env(safe-area-inset-top), ${theme.spacing(8)})`,
+ pb: (theme) => `max(env(safe-area-inset-bottom), ${theme.spacing(8)})`,
+ pl: (theme) => `max(env(safe-area-inset-left), ${theme.spacing(8)})`,
+ pr: 8,
+ }}
+ >
+
+
+
+
+
+
+
+ Manage Firestore data in a spreadsheet-like UI
+
+
+ Write Cloud Functions effortlessly in the browser
+
+
+ Connect to your favorite third party platforms
+
+
+
+
+ }
+ href={EXTERNAL_LINKS.discord}
+ target="_blank"
+ rel="noopener noreferrer"
+ >
+ Join our Community
+
+ }
+ href={EXTERNAL_LINKS.twitter}
+ target="_blank"
+ rel="noopener noreferrer"
+ >
+ Follow on Twitter
+
+
+
+
+ );
+}
diff --git a/src/components/Home/AccessDenied.tsx b/src/components/Home/AccessDenied.tsx
index dbdd8cf7..e2ac2f48 100644
--- a/src/components/Home/AccessDenied.tsx
+++ b/src/components/Home/AccessDenied.tsx
@@ -5,7 +5,7 @@ import SecurityIcon from "@mui/icons-material/SecurityOutlined";
import EmptyState from "components/EmptyState";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
import routes from "constants/routes";
import { useAppContext } from "@src/contexts/AppContext";
diff --git a/src/components/Settings/ProjectSettings/About.tsx b/src/components/Settings/ProjectSettings/About.tsx
index 88708a9b..84827fc8 100644
--- a/src/components/Settings/ProjectSettings/About.tsx
+++ b/src/components/Settings/ProjectSettings/About.tsx
@@ -4,13 +4,16 @@ import { differenceInDays } from "date-fns";
import { Grid, Typography, Button, Link, Divider } from "@mui/material";
import LoadingButton from "@mui/lab/LoadingButton";
+import GitHubIcon from "@mui/icons-material/GitHub";
+import DiscordIcon from "assets/icons/Discord";
+import TwitterIcon from "@mui/icons-material/Twitter";
import Logo from "assets/Logo";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import { name, version, repository } from "@root/package.json";
import { useAppContext } from "contexts/AppContext";
-import WIKI_LINKS from "constants/wikiLinks";
+import { EXTERNAL_LINKS, WIKI_LINKS } from "constants/externalLinks";
const useLastCheckedUpdateState = createPersistedState(
"__ROWY__LAST_CHECKED_UPDATE"
@@ -82,41 +85,44 @@ export default function About() {
/>
-
+
- }
+ href={EXTERNAL_LINKS.gitHub}
target="_blank"
rel="noopener noreferrer"
>
GitHub
-
-
+
- }
+ href={EXTERNAL_LINKS.discord}
target="_blank"
rel="noopener noreferrer"
>
Discord
-
-
+
- }
+ href={EXTERNAL_LINKS.twitter}
target="_blank"
rel="noopener noreferrer"
>
Twitter
-
-
+
@@ -126,29 +132,27 @@ export default function About() {
-
+ {checkState === "LOADING" ? (
+ Checking for updates…
+ ) : latestUpdate === null ? (
+ Up to date
+ ) : (
+
+ Update available:{" "}
+
+ {latestUpdate.tag_name}
+
+
+
+ )}
+
+
{name} v{version}
- {checkState === "LOADING" ? (
-
- Checking for updates…
-
- ) : latestUpdate === null ? (
-
- Up to date
-
- ) : (
-
- Update available: {latestUpdate.tag_name}
-
-
- )}
diff --git a/src/components/Settings/ProjectSettings/RowyRun.tsx b/src/components/Settings/ProjectSettings/RowyRun.tsx
index 806cd65f..1619a1f5 100644
--- a/src/components/Settings/ProjectSettings/RowyRun.tsx
+++ b/src/components/Settings/ProjectSettings/RowyRun.tsx
@@ -14,9 +14,9 @@ import LoadingButton from "@mui/lab/LoadingButton";
import InlineOpenInNewIcon from "components/InlineOpenInNewIcon";
import { IProjectSettingsChildProps } from "pages/Settings/ProjectSettings";
-import WIKI_LINKS from "constants/wikiLinks";
+import { EXTERNAL_LINKS } from "constants/externalLinks";
import { name } from "@root/package.json";
-import { runRoutes, runRepoUrl } from "constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
const useLastCheckedUpdateState = createPersistedState(
"__ROWY__RUN_LAST_CHECKED_UPDATE"
@@ -74,8 +74,10 @@ export default function RowyRun({
// https://docs.github.com/en/rest/reference/repos#get-the-latest-release
const endpoint =
- runRepoUrl.replace("github.com", "api.github.com/repos") +
- "/releases/latest";
+ EXTERNAL_LINKS.rowyRunGitHub.replace(
+ "github.com",
+ "api.github.com/repos"
+ ) + "/releases/latest";
try {
const versionReq = await fetch(
settings.rowyRunUrl + runRoutes.version.path,
@@ -121,7 +123,7 @@ export default function RowyRun({
const deployButton = window.location.hostname.includes("rowy.app") ? (
) : (
-
+
Deploy Instructions
);
@@ -147,7 +153,7 @@ export default function RowyRun({
such as table action scripts, user management, and easy Cloud Function
deployment.{" "}
@@ -162,29 +168,27 @@ export default function RowyRun({
-
+ {checkState === "LOADING" ? (
+ Checking for updates…
+ ) : latestUpdate === null ? (
+ Up to date
+ ) : (
+
+ Update available:{" "}
+
+ {latestUpdate.tag_name}
+
+
+
+ )}
+
+
{name} Run v{version}
- {checkState === "LOADING" ? (
-
- Checking for updates…
-
- ) : latestUpdate === null ? (
-
- Up to date
-
- ) : (
-
- Update available: {latestUpdate.tag_name}
-
-
- )}
diff --git a/src/components/Setup/Step1RowyRun.tsx b/src/components/Setup/Step1RowyRun.tsx
index 812f4cb8..712f11db 100644
--- a/src/components/Setup/Step1RowyRun.tsx
+++ b/src/components/Setup/Step1RowyRun.tsx
@@ -11,7 +11,8 @@ import SetupItem from "./SetupItem";
import { name } from "@root/package.json";
import { rowyRun } from "utils/rowyRun";
-import { runRepoUrl, runRoutes } from "constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
+import { EXTERNAL_LINKS } from "constants/externalLinks";
export default function Step1RowyRun({
completion,
@@ -63,7 +64,7 @@ export default function Step1RowyRun({
const deployButton = window.location.hostname.includes("rowy.app") ? (
}
@@ -72,7 +73,7 @@ export default function Step1RowyRun({
) : (
}
@@ -187,8 +188,10 @@ export const checkRowyRun = async (
// https://docs.github.com/en/rest/reference/repos#get-the-latest-release
const endpoint =
- runRepoUrl.replace("github.com", "api.github.com/repos") +
- "/releases/latest";
+ EXTERNAL_LINKS.rowyRunGitHub.replace(
+ "github.com",
+ "api.github.com/repos"
+ ) + "/releases/latest";
const latestVersionReq = await fetch(endpoint, {
headers: { Accept: "application/vnd.github.v3+json" },
signal,
diff --git a/src/components/Table/ColumnMenu/FieldSettings/DefaultValueInput.tsx b/src/components/Table/ColumnMenu/FieldSettings/DefaultValueInput.tsx
index eda7f26a..f64f99ce 100644
--- a/src/components/Table/ColumnMenu/FieldSettings/DefaultValueInput.tsx
+++ b/src/components/Table/ColumnMenu/FieldSettings/DefaultValueInput.tsx
@@ -13,7 +13,7 @@ import CodeEditorHelper from "components/CodeEditorHelper";
import CodeEditor from "components/Table/editors/CodeEditor";
import FormAutosave from "./FormAutosave";
import { FieldType } from "constants/fields";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
import { name } from "@root/package.json";
const useStyles = makeStyles((theme) =>
diff --git a/src/components/Table/ColumnMenu/FieldSettings/index.tsx b/src/components/Table/ColumnMenu/FieldSettings/index.tsx
index f7a5a432..8255399d 100644
--- a/src/components/Table/ColumnMenu/FieldSettings/index.tsx
+++ b/src/components/Table/ColumnMenu/FieldSettings/index.tsx
@@ -23,7 +23,7 @@ import Button from "@mui/material/Button";
import routes from "constants/routes";
import { SETTINGS } from "config/dbPaths";
import { name as appName } from "@root/package.json";
-import { runRoutes } from "@src/constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
export default function FieldSettings(props: IMenuModalProps) {
const { name, fieldName, type, open, config, handleClose, handleSave } =
diff --git a/src/components/Table/TableHeader/Extensions/ExtensionMigration.tsx b/src/components/Table/TableHeader/Extensions/ExtensionMigration.tsx
index e8476b74..5b79049a 100644
--- a/src/components/Table/TableHeader/Extensions/ExtensionMigration.tsx
+++ b/src/components/Table/TableHeader/Extensions/ExtensionMigration.tsx
@@ -11,7 +11,7 @@ import Modal from "components/Modal";
import { useProjectContext } from "contexts/ProjectContext";
import { useAppContext } from "contexts/AppContext";
import { sparkToExtensionObjects } from "./utils";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
export interface IExtensionMigrationProps {
handleClose: () => void;
diff --git a/src/components/Table/TableHeader/Extensions/ExtensionModal.tsx b/src/components/Table/TableHeader/Extensions/ExtensionModal.tsx
index f4648cf2..6dfb2a92 100644
--- a/src/components/Table/TableHeader/Extensions/ExtensionModal.tsx
+++ b/src/components/Table/TableHeader/Extensions/ExtensionModal.tsx
@@ -33,7 +33,7 @@ import { useConfirmation } from "components/ConfirmationDialog";
import { useProjectContext } from "contexts/ProjectContext";
import { IExtension, triggerTypes } from "./utils";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
const additionalVariables = [
{
diff --git a/src/components/Table/TableHeader/Extensions/index.tsx b/src/components/Table/TableHeader/Extensions/index.tsx
index 97dccfb6..0b473816 100644
--- a/src/components/Table/TableHeader/Extensions/index.tsx
+++ b/src/components/Table/TableHeader/Extensions/index.tsx
@@ -19,7 +19,7 @@ import { useSnackLogContext } from "contexts/SnackLogContext";
import { emptyExtensionObject, IExtension, IExtensionType } from "./utils";
import { name } from "@root/package.json";
-import { runRoutes } from "@src/constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
import { analytics } from "@src/analytics";
export default function ExtensionsEditor() {
diff --git a/src/components/TableSettings/form.tsx b/src/components/TableSettings/form.tsx
index d963f637..b4bd46d6 100644
--- a/src/components/TableSettings/form.tsx
+++ b/src/components/TableSettings/form.tsx
@@ -4,7 +4,7 @@ import { TableSettingsDialogModes } from "./index";
import { Link, Typography } from "@mui/material";
import OpenInNewIcon from "@mui/icons-material/OpenInNew";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
import { name } from "@root/package.json";
export const tableSettings = (
diff --git a/src/components/fields/Action/ActionFab.tsx b/src/components/fields/Action/ActionFab.tsx
index b1ef065e..c9bee238 100644
--- a/src/components/fields/Action/ActionFab.tsx
+++ b/src/components/fields/Action/ActionFab.tsx
@@ -12,7 +12,7 @@ import { cloudFunction } from "firebase/callables";
import { formatPath } from "utils/fns";
import { useConfirmation } from "components/ConfirmationDialog";
import { useActionParams } from "./FormDialog/Context";
-import { runRoutes } from "@src/constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
const replacer = (data: any) => (m: string, key: string) => {
const objKey = key.split(":")[0];
diff --git a/src/components/fields/Derivative/Settings.tsx b/src/components/fields/Derivative/Settings.tsx
index 21d67f43..6792cc46 100644
--- a/src/components/fields/Derivative/Settings.tsx
+++ b/src/components/fields/Derivative/Settings.tsx
@@ -7,7 +7,7 @@ import FieldsDropdown from "components/Table/ColumnMenu/FieldsDropdown";
import { useProjectContext } from "contexts/ProjectContext";
import CodeEditorHelper from "components/CodeEditorHelper";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
const CodeEditor = lazy(
() =>
diff --git a/src/constants/externalLinks.ts b/src/constants/externalLinks.ts
new file mode 100644
index 00000000..d307a00a
--- /dev/null
+++ b/src/constants/externalLinks.ts
@@ -0,0 +1,34 @@
+import _mapValues from "lodash/mapValues";
+import meta from "@root/package.json";
+
+const WIKI_PATHS = {
+ updating: "/Updating",
+ derivatives: "/Derivative-Fields",
+ defaultValues: "/Default-Values",
+ functions: "/Cloud-Functions",
+ securityRules: "/Role-Based-Security-Rules",
+ setUpAuth: "/Setting-Up-Firebase-Authentication",
+ extensions: "/Extensions",
+};
+const WIKI_LINK_ROOT = meta.repository.url.replace(".git", "/wiki");
+export const WIKI_LINKS = _mapValues(
+ WIKI_PATHS,
+ (path) => WIKI_LINK_ROOT + path
+);
+
+export const EXTERNAL_LINKS = {
+ homepage: meta.homepage,
+ privacy: meta.homepage + "/privacy",
+ terms: meta.homepage + "/terms",
+ docs: meta.homepage.replace("//", "//docs."),
+
+ gitHub: meta.repository.url.replace(".git", ""),
+ discord: "https://discord.gg/B8yAD5PDX4",
+ twitter: "https://twitter.com/rowyio",
+
+ rowyRun: meta.repository.url.replace(".git", "Run"),
+ rowyRunGitHub: meta.repository.url.replace(".git", "Run"),
+ // prettier-ignore
+ rowyRunDeploy: `https://deploy.cloud.run/?git_repo=${meta.repository.url.replace(".git", "Run")}.git`,
+ rowyRunDocs: meta.homepage.replace("//", "//docs.") + "/rowyRun",
+};
diff --git a/src/constants/routes.ts b/src/constants/routes.ts
index c84c162d..0fa8e54c 100644
--- a/src/constants/routes.ts
+++ b/src/constants/routes.ts
@@ -9,6 +9,7 @@ export enum routes {
authSetup = "/authSetup",
setup = "/setup",
+ deploy = "/deploy",
pageNotFound = "/404",
table = "/table",
diff --git a/src/constants/runRoutes.ts b/src/constants/runRoutes.ts
index 9d9b6395..99a98cd6 100644
--- a/src/constants/runRoutes.ts
+++ b/src/constants/runRoutes.ts
@@ -1,5 +1,3 @@
-export const runRepoUrl = "https://github.com/rowyio/rowyRun";
-
export type RunRoute = {
path: string;
method: "POST" | "GET" | "DELETE";
diff --git a/src/constants/wikiLinks.ts b/src/constants/wikiLinks.ts
deleted file mode 100644
index a88dbca9..00000000
--- a/src/constants/wikiLinks.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import _mapValues from "lodash/mapValues";
-import meta from "../../package.json";
-
-const WIKI_PATHS = {
- updating: "/Updating",
- derivatives: "/Derivative-Fields",
- defaultValues: "/Default-Values",
- functions: "/Cloud-Functions",
- securityRules: "/Role-Based-Security-Rules",
- setUpAuth: "/Setting-Up-Firebase-Authentication",
- extensions: "/Extensions",
-};
-
-const WIKI_LINK_ROOT = meta.repository.url.replace(".git", "/wiki");
-
-export const WIKI_LINKS = _mapValues(
- WIKI_PATHS,
- (path) => WIKI_LINK_ROOT + path
-);
-export default WIKI_LINKS;
diff --git a/src/pages/Auth/ImpersonatorAuth.tsx b/src/pages/Auth/ImpersonatorAuth.tsx
index 1f811ffd..ff6089ab 100644
--- a/src/pages/Auth/ImpersonatorAuth.tsx
+++ b/src/pages/Auth/ImpersonatorAuth.tsx
@@ -9,7 +9,7 @@ import FirebaseUi from "components/Auth/FirebaseUi";
import { signOut } from "utils/auth";
import { auth } from "../../firebase";
import { useProjectContext } from "@src/contexts/ProjectContext";
-import { runRoutes } from "@src/constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
import { name } from "@root/package.json";
export default function ImpersonatorAuthPage() {
diff --git a/src/pages/Auth/SetupGuide.tsx b/src/pages/Auth/SetupGuide.tsx
index f68079b2..7d893382 100644
--- a/src/pages/Auth/SetupGuide.tsx
+++ b/src/pages/Auth/SetupGuide.tsx
@@ -3,7 +3,7 @@ import OpenInNewIcon from "@mui/icons-material/OpenInNew";
import AuthLayout from "components/Auth/AuthLayout";
-import WIKI_LINKS from "constants/wikiLinks";
+import { WIKI_LINKS } from "constants/externalLinks";
import { name } from "@root/package.json";
export default function AuthSetupGuide() {
diff --git a/src/pages/Auth/SignUp.tsx b/src/pages/Auth/SignUp.tsx
index edc6b485..88785018 100644
--- a/src/pages/Auth/SignUp.tsx
+++ b/src/pages/Auth/SignUp.tsx
@@ -1,15 +1,12 @@
import { useLocation } from "react-router-dom";
import queryString from "query-string";
-import { useMediaQuery, Stack, Paper, Typography, Button } from "@mui/material";
-import { alpha } from "@mui/material/styles";
-import DiscordIcon from "assets/icons/Discord";
-import TwitterIcon from "@mui/icons-material/Twitter";
+import { useMediaQuery, Stack, Typography, Link } from "@mui/material";
-import Logo from "assets/Logo";
+import MarketingBanner from "components/Auth/MarketingBanner";
import AuthLayout from "components/Auth/AuthLayout";
import FirebaseUi from "components/Auth/FirebaseUi";
-import { homepage } from "@root/package.json";
+import { EXTERNAL_LINKS } from "constants/externalLinks";
export default function SignUpPage() {
const { search } = useLocation();
@@ -20,86 +17,15 @@ export default function SignUpPage() {
uiConfig.signInSuccessUrl = parsed.redirect;
}
+ const isMobile = useMediaQuery((theme: any) => theme.breakpoints.down("md"));
+
return (
-
- alpha(theme.palette.background.paper, 0.5),
- backdropFilter: "blur(20px) saturate(150%)",
-
- pt: (theme) => `max(env(safe-area-inset-top), ${theme.spacing(8)})`,
- pb: (theme) =>
- `max(env(safe-area-inset-bottom), ${theme.spacing(8)})`,
- pl: (theme) => `max(env(safe-area-inset-left), ${theme.spacing(8)})`,
- pr: 8,
- }}
- >
-
-
-
-
-
-
-
- Manage Firestore data in a spreadsheet-like UI
-
-
- Write Cloud Functions effortlessly in the browser
-
-
- Connect to your favorite third party platforms
-
-
-
-
- }
- >
- Join our Community
-
- }
- >
- Follow on Twitter
-
-
-
-
+
@@ -115,6 +41,31 @@ export default function SignUpPage() {
}
>
+
+ By signing up, you agree to our{" "}
+
+ Terms and Conditions
+ {" "}
+ and{" "}
+
+ Privacy Policy
+
+ .
+
diff --git a/src/pages/Deploy.tsx b/src/pages/Deploy.tsx
new file mode 100644
index 00000000..83eb9a3b
--- /dev/null
+++ b/src/pages/Deploy.tsx
@@ -0,0 +1,80 @@
+import { useLocation } from "react-router-dom";
+import queryString from "query-string";
+
+import { useMediaQuery, Stack, Typography, Link, Button } from "@mui/material";
+import OpenInNewIcon from "@mui/icons-material/OpenInNew";
+
+import MarketingBanner from "components/Auth/MarketingBanner";
+import AuthLayout from "components/Auth/AuthLayout";
+
+import { EXTERNAL_LINKS } from "constants/externalLinks";
+import { name } from "@root/package.json";
+
+export default function DeployPage() {
+ const { search } = useLocation();
+ const parsed = queryString.parse(search);
+
+ const uiConfig: firebaseui.auth.Config = {};
+ if (typeof parsed.redirect === "string" && parsed.redirect.length > 0) {
+ uiConfig.signInSuccessUrl = parsed.redirect;
+ }
+
+ const isMobile = useMediaQuery((theme: any) => theme.breakpoints.down("md"));
+
+ return (
+
+
+
+
+
+ To get started with {name}, set up {name} Run on your Google Cloud
+ Platform project with this one-click deploy button.
+ >
+ }
+ >
+
+
+
+
+
+ By setting up {name}, you agree to our{" "}
+
+ Terms and Conditions
+ {" "}
+ and{" "}
+
+ Privacy Policy
+
+ .
+
+
+
+
+ );
+}
diff --git a/src/pages/RowyRunTest.tsx b/src/pages/RowyRunTest.tsx
index 801959ce..cde72586 100644
--- a/src/pages/RowyRunTest.tsx
+++ b/src/pages/RowyRunTest.tsx
@@ -18,7 +18,7 @@ import {
} from "@mui/material";
import { useConfirmation } from "components/ConfirmationDialog";
import { useProjectContext } from "@src/contexts/ProjectContext";
-import { runRoutes } from "@src/constants/runRoutes";
+import { runRoutes } from "constants/runRoutes";
const useBodyCacheState = createPersistedState("__ROWY__RR_TEST_REQ_BODY");
export default function TestView() {
diff --git a/src/pages/Setup.tsx b/src/pages/Setup.tsx
index 97090780..176b9cc4 100644
--- a/src/pages/Setup.tsx
+++ b/src/pages/Setup.tsx
@@ -23,7 +23,7 @@ import LoadingButton from "@mui/lab/LoadingButton";
import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
import ChevronRightIcon from "@mui/icons-material/ChevronRight";
-import BrandedBackground from "assets/BrandedBackground";
+import BrandedBackground, { Wrapper } from "assets/BrandedBackground";
import Logo from "assets/Logo";
import ScrollableDialogContent from "components/Modal/ScrollableDialogContent";
import { SlideTransition } from "components/Modal/SlideTransition";
@@ -246,7 +246,7 @@ export default function SetupPage() {
};
return (
-
+
);
}
diff --git a/src/theme/components.tsx b/src/theme/components.tsx
index 7c6f2e72..761baba4 100644
--- a/src/theme/components.tsx
+++ b/src/theme/components.tsx
@@ -54,6 +54,8 @@ export const components = (theme: Theme): ThemeOptions => {
},
},
+ body: { cursor: "default" },
+
"code, pre, pre.MuiTypography-root": {
fontFamily: theme.typography.fontFamilyMono,
letterSpacing: 0,