diff --git a/next.config.js b/next.config.js
index fc9458b4..27b08516 100644
--- a/next.config.js
+++ b/next.config.js
@@ -1,6 +1,7 @@
/** @type {import('next').NextConfig} */
const { config } = require("./src/services/squid/squidConfig");
+const { version } = require("./package.json");
const nextConfig = {
reactStrictMode: true,
@@ -12,6 +13,9 @@ const nextConfig = {
transform: "@mui/icons-material/{{member}}",
},
},
+ publicRuntimeConfig: {
+ version,
+ },
async rewrites() {
return [
{
diff --git a/package.json b/package.json
index d476c75c..1193878f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "multisig-ui",
- "version": "0.1.0",
+ "version": "0.1.0-beta",
"private": true,
"scripts": {
"dev": "next dev",
diff --git a/public/xSigners-logo-beta.svg b/public/xSigners-logo-beta.svg
new file mode 100644
index 00000000..ba5abed5
--- /dev/null
+++ b/public/xSigners-logo-beta.svg
@@ -0,0 +1,17 @@
+
diff --git a/src/components/layout/AppLayout.tsx b/src/components/layout/AppLayout.tsx
index f11d450f..a02dd061 100644
--- a/src/components/layout/AppLayout.tsx
+++ b/src/components/layout/AppLayout.tsx
@@ -10,6 +10,7 @@ import { TopBar } from "@/components/layout/TopBar";
import { useSettingsTheme } from "@/context/SettingsThemeConsumer";
import { scalePixels } from "@/themes/spacing";
+import { Footer } from "./Footer";
import { VerticalMenuBar } from "./VerticalMenuBar";
const ContentWrapper = styled(Box)(
@@ -45,6 +46,7 @@ export const AppLayout: React.FC = ({ children }) => {
{children}
+
);
diff --git a/src/components/layout/Footer/index.tsx b/src/components/layout/Footer/index.tsx
new file mode 100644
index 00000000..47e6f0d6
--- /dev/null
+++ b/src/components/layout/Footer/index.tsx
@@ -0,0 +1,46 @@
+import { Link, Stack, Tooltip, Typography } from "@mui/material";
+import getConfig from "next/config";
+import React from "react";
+
+import { FooterContainer } from "./styled";
+
+const { publicRuntimeConfig } = getConfig();
+const version = publicRuntimeConfig?.version;
+
+function isBetaVersion(_version: string): boolean {
+ const betaRegex = /-beta|-alpha|-rc/;
+
+ return betaRegex.test(_version);
+}
+
+export const Footer: React.FC = () => {
+ const isBeta = isBetaVersion(version);
+
+ return (
+
+ {isBeta && (
+
+ Beta version
+
+ )}
+ {version && (
+
+
+ UI:
+
+ v{version}
+
+
+
+ )}
+
+ );
+};
diff --git a/src/components/layout/Footer/styled.ts b/src/components/layout/Footer/styled.ts
new file mode 100644
index 00000000..0ce27c74
--- /dev/null
+++ b/src/components/layout/Footer/styled.ts
@@ -0,0 +1,15 @@
+import { styled } from "@mui/material/styles";
+
+export const FooterContainer = styled("footer")(({ theme }) => ({
+ display: "flex",
+ alignItems: "flex-end",
+ boxSizing: "border-box",
+ fontSize: "1.2rem",
+ padding: "1rem 0 1rem 15.5rem",
+ flex: "1 1 auto",
+ color: theme.palette.text.secondary,
+ width: "100%",
+ justifyContent: "center",
+ margin: "0",
+ gap: "1rem",
+}));
diff --git a/src/components/layout/TopBar.tsx b/src/components/layout/TopBar.tsx
index 0a0e196d..235a9ed4 100644
--- a/src/components/layout/TopBar.tsx
+++ b/src/components/layout/TopBar.tsx
@@ -16,7 +16,7 @@ export function TopBar({