Transactions
-
@@ -331,4 +330,4 @@ function Block(props: { alt?: boolean }) {
)
}
-export default Block;
\ No newline at end of file
+export default Block;
diff --git a/src/index.scss b/src/pages/index.scss
similarity index 75%
rename from src/index.scss
rename to src/pages/index.scss
index a8c0ea1..2cec65c 100644
--- a/src/index.scss
+++ b/src/pages/index.scss
@@ -10,7 +10,7 @@
color: #ffffff;
}
-#root {
+#__next {
max-width: 1200px;
padding: 0 15px;
margin: 0 auto;
@@ -72,42 +72,42 @@ button {
@font-face {
font-family: 'Open Sans';
- src: url(./assets/fonts/OpenSans/OpenSans-Light.ttf) format("opentype");
+ src: url(../assets/fonts/OpenSans/OpenSans-Light.ttf) format("opentype");
font-weight: 300;
}
@font-face {
font-family: 'Open Sans';
- src: url(./assets/fonts/OpenSans/OpenSans-Regular.ttf) format("opentype");
+ src: url(../assets/fonts/OpenSans/OpenSans-Regular.ttf) format("opentype");
font-weight: 400;
}
@font-face {
font-family: 'Open Sans';
- src: url(./assets/fonts/OpenSans/OpenSans-Medium.ttf) format("opentype");
+ src: url(../assets/fonts/OpenSans/OpenSans-Medium.ttf) format("opentype");
font-weight: 500;
}
@font-face {
font-family: 'Open Sans';
- src: url(./assets/fonts/OpenSans/OpenSans-SemiBold.ttf) format("opentype");
+ src: url(../assets/fonts/OpenSans/OpenSans-SemiBold.ttf) format("opentype");
font-weight: 600;
}
@font-face {
font-family: 'Open Sans';
- src: url(./assets/fonts/OpenSans/OpenSans-Bold.ttf) format("opentype");
+ src: url(../assets/fonts/OpenSans/OpenSans-Bold.ttf) format("opentype");
font-weight: 700;
}
@font-face {
font-family: 'Open Sans';
- src: url(./assets/fonts/OpenSans/OpenSans-ExtraBold.ttf) format("opentype");
+ src: url(../assets/fonts/OpenSans/OpenSans-ExtraBold.ttf) format("opentype");
font-weight: 800;
}
@font-face {
font-family: "Inconsolata";
- src: url(./assets/fonts/Inconsolata/Inconsolata-Regular.ttf) format("opentype");
+ src: url(../assets/fonts/Inconsolata/Inconsolata-Regular.ttf) format("opentype");
font-weight: 400;
}
diff --git a/src/pages/index.tsx b/src/pages/index.tsx
new file mode 100644
index 0000000..6027345
--- /dev/null
+++ b/src/pages/index.tsx
@@ -0,0 +1,9 @@
+import Blockchain from './Blockchain/index';
+
+function App() {
+ return (
+
+ );
+}
+
+export default App;
diff --git a/src/pages/Transaction/Transaction.tsx b/src/pages/transaction/index.tsx
similarity index 81%
rename from src/pages/Transaction/Transaction.tsx
rename to src/pages/transaction/index.tsx
index 0f3a849..4285b43 100644
--- a/src/pages/Transaction/Transaction.tsx
+++ b/src/pages/transaction/index.tsx
@@ -1,17 +1,18 @@
-import "../../styles/Transaction.scss";
+import styles from "@/styles/Transaction.module.scss";
import { useEffect, useState } from "react";
-import Header from "../../components/default/Header/Header";
-import InfoTopPanel from "../../components/default/InfoTopPanel/InfoTopPanel";
-import StatsPanel from "../../components/default/StatsPanel/StatsPanel";
-import Table from "../../components/default/Table/Table";
-import TransactionInfo, { Input } from "../../interfaces/common/TransactionInfo";
-import Fetch from "../../utils/methods";
-import { Link, useNavigate, useParams } from "react-router-dom";
-import Utils from "../../utils/utils";
+import Header from "@/components/default/Header/Header";
+import InfoTopPanel from "@/components/default/InfoTopPanel/InfoTopPanel";
+import StatsPanel from "@/components/default/StatsPanel/StatsPanel";
+import Table from "@/components/default/Table/Table";
+import TransactionInfo, { Input } from "@/interfaces/common/TransactionInfo";
+import Fetch from "@/utils/methods";
+import Link from "next/link";
+import Utils from "@/utils/utils";
import { nanoid } from "nanoid";
-import Popup from "../../components/default/Popup/Popup";
-import { ReactComponent as CrossImg } from "../../assets/images/UI/cross.svg";
-import Button from "../../components/UI/Button/Button";
+import Popup from "@/components/default/Popup/Popup";
+import CrossImg from "@/assets/images/UI/cross.svg";
+import Button from "@/components/UI/Button/Button";
+import { useRouter } from "next/router";
interface Block {
hash: string;
@@ -19,8 +20,6 @@ interface Block {
timestamp: string;
}
-
-
function Transaction() {
const [burgerOpened, setBurgerOpened] = useState(false);
@@ -30,9 +29,11 @@ function Transaction() {
const [popupState, setPopupState] = useState(false);
const [selectedInput, setSelectedInput] = useState
(null);
- const { hash } = useParams();
+ const router = useRouter();
- const navigate = useNavigate();
+ const { hashQuery } = router.query;
+
+ const hash = Array.isArray(hashQuery) ? hashQuery[0] : hashQuery;
useEffect(() => {
async function fetchTransaction() {
@@ -81,7 +82,6 @@ function Transaction() {
e.convertedAmount = Utils.convertENotationToString(existingAmount?.toExponential());
}
-
return {
amount: e.convertedAmount,
keyimage: e?.kimage_or_ms_id || "",
@@ -129,7 +129,7 @@ function Transaction() {
event.preventDefault();
const result = await Fetch.getOutInfo(amount, index);
if (result.tx_id && typeof result.tx_id === "string") {
- navigate("/transaction/" + result.tx_id);
+ router.push("/transaction/" + result.tx_id);
setPopupState(false);
}
}
@@ -141,12 +141,12 @@ function Transaction() {
e.globalIndexes.length,
e.globalIndexes.length > 1 ?
(
-
showIndexesClick(event, e)}>Show all...
+
showIndexesClick(event, e)}>Show all...
)
:
(
onIndexClick(event, e.amount, e.globalIndexes[0])}
>
{e.globalIndexes[0] ?? ""}
@@ -158,7 +158,7 @@ function Transaction() {
const outsRows = transactionInfo ? (
transactionInfo.outs.map(e => [
e.amount,
-
+
{e.publicKeys.map(e =>
{e}
)}
,
e.globalIndex
@@ -170,7 +170,7 @@ function Transaction() {
const amount = selectedInput?.amount || 0;
return (
-
+
Input ring set ({popupIndexes.length})
@@ -178,7 +178,7 @@ function Transaction() {
{popupIndexes.map(e =>
(
onIndexClick(event, amount, e)}
>
@@ -189,7 +189,7 @@ function Transaction() {