- Showing batches #{firstBatchHeight}{" "}
- {lastBatchHeight !== firstBatchHeight &&
- "to #" + lastBatchHeight}
- {/* uncomment the following line when total count feature is implemented */}
- {/* of {formatNumber(Total)} batches. */}
-
- )}
+ <>
+
+
+
+
+
+
Batches
+ {BatchesData?.length > 0 && (
+
+ Showing batches #{firstBatchHeight}{" "}
+ {lastBatchHeight !== firstBatchHeight &&
+ "to #" + lastBatchHeight}
+ {/* uncomment the following line when total count feature is implemented */}
+ {/* of {formatNumber(Total)} batches. */}
+
+ )}
+
+
-
-
-
+
+ >
);
}
diff --git a/tools/tenscan/frontend/pages/blocks/index.tsx b/tools/tenscan/frontend/pages/blocks/index.tsx
index 158a1214dd..756add84b4 100644
--- a/tools/tenscan/frontend/pages/blocks/index.tsx
+++ b/tools/tenscan/frontend/pages/blocks/index.tsx
@@ -6,6 +6,8 @@ import { Metadata } from "next";
import { useBlocksService } from "@/src/services/useBlocksService";
import { getItem } from "@/src/lib/utils";
import { ItemPosition } from "@/src/types/interfaces";
+import HeadSeo from "@/src/components/head-seo";
+import { siteMetadata } from "@/src/lib/siteMetadata";
export const metadata: Metadata = {
title: "Blocks",
@@ -32,31 +34,41 @@ export default function Blocks() {
);
return (
-
-
-
-
-
Blocks
- {BlocksData?.length > 0 && (
-
- Showing blocks #{firstBlockNumber}{" "}
- {lastBlockNumber !== firstBlockNumber &&
- "to #" + lastBlockNumber}
- {/* uncomment the following line when total count feature is implemented */}
- {/* of {formatNumber(Total)} blocks. */}
-
- )}
+ <>
+
+
+
+
+
+
Blocks
+ {BlocksData?.length > 0 && (
+
+ Showing blocks #{firstBlockNumber}{" "}
+ {lastBlockNumber !== firstBlockNumber &&
+ "to #" + lastBlockNumber}
+ {/* uncomment the following line when total count feature is implemented */}
+ {/* of {formatNumber(Total)} blocks. */}
+
- Showing rollups #{firstRollupID}{" "}
- {lastRollupID !== firstRollupID && "to #" + lastRollupID}
- {/* uncomment the following line when total count feature is implemented */}
- {/* of {formatNumber(Total)} rollups. */}
-
- )}
+ <>
+
+
+
+
+
+
Rollups
+ {RollupsData?.length > 0 && (
+
+ Showing rollups #{firstRollupID}{" "}
+ {lastRollupID !== firstRollupID && "to #" + lastRollupID}
+ {/* uncomment the following line when total count feature is implemented */}
+ {/* of {formatNumber(Total)} rollups. */}
+
+ )}
+
+
-
-
-
+
+ >
);
}
diff --git a/tools/tenscan/frontend/pages/transactions/index.tsx b/tools/tenscan/frontend/pages/transactions/index.tsx
index 2a63269e16..a94c0e45d4 100644
--- a/tools/tenscan/frontend/pages/transactions/index.tsx
+++ b/tools/tenscan/frontend/pages/transactions/index.tsx
@@ -6,6 +6,8 @@ import { useTransactionsService } from "@/src/services/useTransactionsService";
import { Metadata } from "next";
import { getItem } from "@/src/lib/utils";
import { ItemPosition } from "@/src/types/interfaces";
+import HeadSeo from "@/src/components/head-seo";
+import { siteMetadata } from "@/src/lib/siteMetadata";
export const metadata: Metadata = {
title: "Transactions",
@@ -41,33 +43,45 @@ export default function Transactions() {
);
return (
-
-
-
-
-
Transactions
- {TransactionsData?.length > 0 && (
-
- Showing transactions in batch
- {firstBatchHeight !== lastBatchHeight && "es"} #
- {firstBatchHeight}{" "}
- {firstBatchHeight !== lastBatchHeight &&
- "to #" + lastBatchHeight}
- {/* uncomment the following line when total count feature is implemented */}
- {/* of {formatNumber(Total)} transactions. */}
-
- )}
+ <>
+
+
+
+
+
+
+ Transactions
+
+ {TransactionsData?.length > 0 && (
+
+ Showing transactions in batch
+ {firstBatchHeight !== lastBatchHeight && "es"} #
+ {firstBatchHeight}{" "}
+ {firstBatchHeight !== lastBatchHeight &&
+ "to #" + lastBatchHeight}
+ {/* uncomment the following line when total count feature is implemented */}
+ {/* of {formatNumber(Total)} transactions. */}
+
+ )}
+
+
-
-
-
+
+ >
);
}
diff --git a/tools/tenscan/frontend/public/assets/images/cover.png b/tools/tenscan/frontend/public/assets/images/cover.png
new file mode 100644
index 0000000000..e39c8a99fc
Binary files /dev/null and b/tools/tenscan/frontend/public/assets/images/cover.png differ
diff --git a/tools/tenscan/frontend/src/components/head-seo.tsx b/tools/tenscan/frontend/src/components/head-seo.tsx
index f6007c6b7f..3cafb9c345 100644
--- a/tools/tenscan/frontend/src/components/head-seo.tsx
+++ b/tools/tenscan/frontend/src/components/head-seo.tsx
@@ -9,6 +9,7 @@ const HeadSeo = ({
ogTwitterImage,
ogImageUrl,
ogType,
+ includeDefaultKeywords = true,
children,
}: SeoProps) => {
return (
@@ -18,6 +19,9 @@ const HeadSeo = ({
+ {includeDefaultKeywords && (
+
+ )}
{/* twitter metadata */}
@@ -42,6 +46,25 @@ const HeadSeo = ({
key="og-image"
/>
+
+
+
+
+
{children}
);
diff --git a/tools/tenscan/frontend/src/lib/siteMetadata.ts b/tools/tenscan/frontend/src/lib/siteMetadata.ts
index de13a1ea29..60be30ad23 100644
--- a/tools/tenscan/frontend/src/lib/siteMetadata.ts
+++ b/tools/tenscan/frontend/src/lib/siteMetadata.ts
@@ -2,15 +2,65 @@ import { socialLinks } from "./constants";
export const siteMetadata = {
companyName: "Tenscan",
- metaTitle:
- "Ten, a decentralized Layer 2 Rollup protocol designed to hyper-scale and encrypt the Ethereum blockchain.",
+ metaTitle: "Tenscan - Real-Time Blockchain Explorer",
description:
- "Tenscan allows you to explore and search activities taking place on the Ten Layer 2 blockchain",
- siteUrl: "https://ten.xyz",
- siteLogo: ``,
- siteLogoSquare: ``,
- email: "team@obscu.ro",
+ "Tenscan allows you to explore and search the TEN blockchain. View transaction history and smart contract interactions without compromising sensitive data.",
+ keywords:
+ "blockchain explorer, real-time blockchain data, dapps, l2, encryption, layer2, crypto transactions, blockchain analysis, Tenscan, block explorer,TEN, TEN Protocol, TEN chain, TEN network, TEN blockchain, TEN explorer",
+ siteUrl: "https://tenscan.io",
+ siteLogo: `/assets/images/cover.png`,
+ siteLogoSquare: `/assets/images/cover.png`,
+ email: "team@ten.xyz",
twitter: socialLinks.twitter,
twitterHandle: socialLinks.twitterHandle,
github: socialLinks.github,
+
+ rollups: {
+ title: "Tenscan | Rollups",
+ description: "View the latest rollups on the TEN network.",
+ canonicalUrl: "https://tenscan.io/rollups",
+ ogImageUrl: "/assets/images/cover.png",
+ ogTwitterImage: "/assets/images/cover.png",
+ ogType: "website",
+ },
+
+ blocks: {
+ title: "Tenscan | Blocks",
+ description:
+ "Analyze blocks on TEN in real-time. Access block height, timestamp, transaction count, and miner details instantly",
+ canonicalUrl: "https://tenscan.io/blocks",
+ ogImageUrl: "/assets/images/cover.png",
+ ogTwitterImage: "/assets/images/cover.png",
+ ogType: "website",
+ },
+
+ batches: {
+ title: "Tenscan | Batches",
+ description:
+ "Explore the history of batches on TEN. Access detailed batch lists, transaction summaries, and batch metadata",
+ canonicalUrl: "https://tenscan.io/batches",
+ ogImageUrl: "/assets/images/cover.png",
+ ogTwitterImage: "/assets/images/cover.png",
+ ogType: "website",
+ },
+
+ transactions: {
+ title: "Tenscan | Public Transactions",
+ description:
+ "Explore all public transactions on TEN. View essential details including batch, batch age, transaction hash, and finality status",
+ canonicalUrl: "https://tenscan.io/transactions",
+ ogImageUrl: "/assets/images/cover.png",
+ ogTwitterImage: "/assets/images/cover.png",
+ ogType: "website",
+ },
+
+ personal: {
+ title: "Tenscan | Personal Transactions",
+ description:
+ "Access detailed information about your transactions on TEN. View sender, receiver, amount, confirmation status and more",
+ canonicalUrl: "https://tenscan.io/personal",
+ ogImageUrl: "/assets/images/cover.png",
+ ogTwitterImage: "/assets/images/cover.png",
+ ogType: "website",
+ },
};
diff --git a/tools/tenscan/frontend/src/types/interfaces/index.ts b/tools/tenscan/frontend/src/types/interfaces/index.ts
index 48b87edb9e..bd25e0b37a 100644
--- a/tools/tenscan/frontend/src/types/interfaces/index.ts
+++ b/tools/tenscan/frontend/src/types/interfaces/index.ts
@@ -7,7 +7,8 @@ export interface SeoProps {
ogTwitterImage: string;
ogImageUrl: string;
ogType: string;
- children: React.ReactNode;
+ includeDefaultKeywords?: boolean;
+ children?: React.ReactNode;
}
export interface ErrorType {
diff --git a/tools/walletextension/frontend/public/assets/images/cover.png b/tools/walletextension/frontend/public/assets/images/cover.png
new file mode 100644
index 0000000000..8afca0118e
Binary files /dev/null and b/tools/walletextension/frontend/public/assets/images/cover.png differ
diff --git a/tools/walletextension/frontend/src/components/head-seo.tsx b/tools/walletextension/frontend/src/components/head-seo.tsx
index e353162253..9510d6329c 100644
--- a/tools/walletextension/frontend/src/components/head-seo.tsx
+++ b/tools/walletextension/frontend/src/components/head-seo.tsx
@@ -9,6 +9,7 @@ const HeadSeo = ({
ogTwitterImage,
ogImageUrl,
ogType,
+ includeDefaultKeywords = true,
children,
}: SeoProps) => {
return (
@@ -18,6 +19,9 @@ const HeadSeo = ({
+ {includeDefaultKeywords && (
+
+ )}
{/* Beagle Security */}
+
+
+
+
+
{children}
);
diff --git a/tools/walletextension/frontend/src/lib/siteMetadata.ts b/tools/walletextension/frontend/src/lib/siteMetadata.ts
index 00f812a90b..c5cd2666e8 100644
--- a/tools/walletextension/frontend/src/lib/siteMetadata.ts
+++ b/tools/walletextension/frontend/src/lib/siteMetadata.ts
@@ -1,15 +1,16 @@
import { socialLinks } from "./constants";
export const siteMetadata = {
- companyName: "Ten Gateway",
- metaTitle:
- "Ten, a decentralized Layer 2 Rollup protocol designed to hyper-scale and encrypt the Ethereum blockchain.",
+ companyName: "TEN Gateway",
+ metaTitle: "Secure Blockchain Authentication - TEN Gateway",
description:
- "Ten, a decentralized Ethereum Layer 2 Rollup protocol designed to hyper-scale, encrypt and prevent negative MEV on Ethereum.",
- siteUrl: "https://ten.xyz",
- siteLogo: ``,
- siteLogoSquare: ``,
- email: "team@obscu.ro",
+ "Your secure entry point to the TEN ecosystem. Easily authenticate your accounts and access dApps built on TEN. Experience seamless, confidential blockchain interactions.",
+ keywords:
+ "blockchain authentication, secure login, crypto account access, dapps, l2, encryption, layer2, digital identity, TEN Gateway, blockchain security, TEN network, TEN blockchain, TEN ecosystem",
+ siteUrl: "https://testnet.ten.xyz",
+ siteLogo: `/assets/images/cover.png`,
+ siteLogoSquare: `/assets/images/cover.png`,
+ email: "team@ten.xyz",
twitter: socialLinks.twitter,
twitterHandle: socialLinks.twitterHandle,
github: socialLinks.github,
diff --git a/tools/walletextension/frontend/src/pages/_app.tsx b/tools/walletextension/frontend/src/pages/_app.tsx
index afe1f352c6..46e445773b 100644
--- a/tools/walletextension/frontend/src/pages/_app.tsx
+++ b/tools/walletextension/frontend/src/pages/_app.tsx
@@ -33,27 +33,7 @@ export default function App({ Component, pageProps }: AppProps) {
ogImageUrl={siteMetadata.siteLogo}
ogTwitterImage={siteMetadata.siteLogo}
ogType={"website"}
- >
-
-
-
-
-
-
+ >