diff --git a/package.json b/package.json
index 9576bd344..ff0395e5e 100644
--- a/package.json
+++ b/package.json
@@ -136,5 +136,10 @@
"ws@<8.17.1": ">=8.17.1",
"fast-loops@<1.1.4": ">=1.1.4"
}
+ },
+ "dependencies": {
+ "react-data-table-component": "7.6.2",
+ "react-paginate": "8.2.0",
+ "recharts": "2.12.7"
}
}
diff --git a/packages/app-explorer/package.json b/packages/app-explorer/package.json
index 142cbe77f..a261e57a0 100644
--- a/packages/app-explorer/package.json
+++ b/packages/app-explorer/package.json
@@ -40,8 +40,10 @@
"react": "18.2.0",
"react-dom": "18.2.0",
"react-json-view-lite": "1.4.0",
+ "react-modal": "3.16.1",
"react-use": "17.5.0",
"react-window": "1.8.10",
+ "recharts": "2.12.7",
"tai64": "1.0.0",
"tailwind-variants": "0.1.20",
"wagmi": "2.12.7",
diff --git a/packages/app-explorer/public/ecosystem/images/executoors.jpeg b/packages/app-explorer/public/ecosystem/images/executoors.jpeg
new file mode 100644
index 000000000..01f8c2afe
Binary files /dev/null and b/packages/app-explorer/public/ecosystem/images/executoors.jpeg differ
diff --git a/packages/app-explorer/public/ecosystem/images/fuelet.jpeg b/packages/app-explorer/public/ecosystem/images/fuelet.jpeg
index 5e305ad99..da70bf17e 100644
Binary files a/packages/app-explorer/public/ecosystem/images/fuelet.jpeg and b/packages/app-explorer/public/ecosystem/images/fuelet.jpeg differ
diff --git a/packages/app-explorer/src/app/layout.tsx b/packages/app-explorer/src/app/layout.tsx
index f3323df9f..82c379600 100644
--- a/packages/app-explorer/src/app/layout.tsx
+++ b/packages/app-explorer/src/app/layout.tsx
@@ -43,7 +43,7 @@ export default function RootLayout({
-
+
{children}
diff --git a/packages/app-explorer/src/systems/Block/screens/BlockScreen.tsx b/packages/app-explorer/src/systems/Block/screens/BlockScreen.tsx
index a428fa585..527883f74 100644
--- a/packages/app-explorer/src/systems/Block/screens/BlockScreen.tsx
+++ b/packages/app-explorer/src/systems/Block/screens/BlockScreen.tsx
@@ -46,14 +46,35 @@ export const BlocksScreen = () => {
let newCursor: string | null = null;
setDir(newDir);
- if (newDir === 'before' && data.pageInfo.endCursor) {
- newCursor = data.pageInfo.endCursor;
- } else if (newDir === 'after' && data.pageInfo.startCursor) {
- newCursor = data.pageInfo.startCursor;
+ if (
+ newPageNumber === currentPage + 1 ||
+ newPageNumber === currentPage - 1
+ ) {
+ if (newDir === 'before' && data.pageInfo.endCursor) {
+ newCursor = data.pageInfo.endCursor;
+ } else if (newDir === 'after' && data.pageInfo.startCursor) {
+ newCursor = data.pageInfo.startCursor;
+ }
+ } else {
+ if (newDir === 'before' && data.pageInfo.endCursor) {
+ newCursor = (
+ +data.pageInfo.endCursor -
+ (newPageNumber - currentPage) * limit
+ ).toString();
+ } else if (newDir === 'after' && data.pageInfo.startCursor) {
+ newCursor = (
+ +data.pageInfo.startCursor +
+ (currentPage - newPageNumber) * limit
+ ).toString();
+ }
}
setCurrentPage(newPageNumber);
setCurrentCursor(newCursor);
+ if (newPageNumber === 1) {
+ router.push('/blocks');
+ return;
+ }
router.push(`/blocks?page=${newPageNumber}&cursor=${newCursor}`);
}
};
diff --git a/packages/app-explorer/src/systems/Core/components/Layout/Layout.tsx b/packages/app-explorer/src/systems/Core/components/Layout/Layout.tsx
index 0041f44ed..82e808434 100644
--- a/packages/app-explorer/src/systems/Core/components/Layout/Layout.tsx
+++ b/packages/app-explorer/src/systems/Core/components/Layout/Layout.tsx
@@ -1,8 +1,10 @@
'use client';
-import { Container, VStack } from '@fuels/ui';
+import { Container, LoadingBox, VStack } from '@fuels/ui';
import { usePathname } from 'next/navigation';
-import { Hero } from '~/systems/Home/components/Hero/Hero';
+const Hero = React.lazy(() => import('~/systems/Home/components/Hero/Hero'));
+import { DateTime } from 'fuels';
+import React, { Suspense } from 'react';
import { cx } from '../../utils/cx';
import { Footer } from '../Footer/Footer';
import { TopNav } from '../TopNav/TopNav';
@@ -15,15 +17,19 @@ export type LayoutProps = {
export function Layout({ children, contentClassName }: LayoutProps) {
const pathname = usePathname();
const isHomePage = pathname === '/';
-
+ console.log('Page loaded', DateTime.now);
return (
- {isHomePage && }
+ {isHomePage && (
+ }>
+
+
+ )}
diff --git a/packages/app-explorer/src/systems/Core/components/Search/SearchForm.tsx b/packages/app-explorer/src/systems/Core/components/Search/SearchForm.tsx
index e8accce96..f74c660d2 100644
--- a/packages/app-explorer/src/systems/Core/components/Search/SearchForm.tsx
+++ b/packages/app-explorer/src/systems/Core/components/Search/SearchForm.tsx
@@ -8,14 +8,9 @@ import { styles } from './styles';
type SearchFormProps = {
className: string;
autoFocus?: boolean;
- variablePosition?: boolean;
};
-export function SearchForm({
- className,
- autoFocus,
- variablePosition,
-}: SearchFormProps) {
+export function SearchForm({ className, autoFocus }: SearchFormProps) {
const classes = styles();
const [results, action] = useFormState(
(_: GQLSearchResult | null, formData: FormData) => {
@@ -27,7 +22,6 @@ export function SearchForm({
return (