diff --git a/client/src/app/components/Modal.scss b/client/src/app/components/Modal.scss index a2b512fab..41bd70141 100644 --- a/client/src/app/components/Modal.scss +++ b/client/src/app/components/Modal.scss @@ -118,6 +118,9 @@ .modal--actions { margin: 24px 0; pointer-events: auto; + display: flex; + gap: 8px; + .modal--action { @include font-size(14px, 21px); diff --git a/client/src/app/components/header/Header.tsx b/client/src/app/components/header/Header.tsx index 904c174e4..427f007f9 100644 --- a/client/src/app/components/header/Header.tsx +++ b/client/src/app/components/header/Header.tsx @@ -7,10 +7,11 @@ import { IDropdownRoute, IRoute } from "~/app/lib/interfaces"; import mainChrysalisMessage from "~assets/modals/chrysalis/search/main-header.json"; import mainLegacyMessage from "~assets/modals/legacy/search/main-header.json"; import mainStardustMessage from "~assets/modals/stardust/search/main-header.json"; +import mainNovaMessage from "~assets/modals/nova/search/main-header.json"; import ShimmerLogo from "~assets/shimmer-logo-header.svg?react"; import { ServiceFactory } from "~factories/serviceFactory"; import { isMarketedNetwork, isShimmerUiTheme } from "~helpers/networkHelper"; -import { CHRYSALIS, LEGACY, ProtocolVersion, STARDUST } from "~models/config/protocolVersion"; +import { CHRYSALIS, LEGACY, NOVA, ProtocolVersion, STARDUST } from "~models/config/protocolVersion"; import { SettingsService } from "~services/settingsService"; import FiatSelector from "../FiatSelector"; import Modal from "../Modal"; @@ -26,6 +27,7 @@ const MODAL_MESSAGE: { [key in ProtocolVersion]?: { title: string; description: [LEGACY]: mainLegacyMessage, [CHRYSALIS]: mainChrysalisMessage, [STARDUST]: mainStardustMessage, + [NOVA]: mainNovaMessage, }; interface IHeader { diff --git a/client/src/app/components/nova/address/AddressNotFoundPage.tsx b/client/src/app/components/nova/address/AddressNotFoundPage.tsx index b467e7b33..7abaf4782 100644 --- a/client/src/app/components/nova/address/AddressNotFoundPage.tsx +++ b/client/src/app/components/nova/address/AddressNotFoundPage.tsx @@ -1,5 +1,5 @@ import React from "react"; -import addressMainHeaderInfo from "~assets/modals/stardust/address/main-header.json"; +import addressMainHeaderInfo from "~assets/modals/nova/address/main-header.json"; import Modal from "../../Modal"; import NotFound from "../../NotFound"; diff --git a/client/src/app/components/nova/address/section/AddressPageTabbedSections.tsx b/client/src/app/components/nova/address/section/AddressPageTabbedSections.tsx index cead3677c..6e4cd8fb9 100644 --- a/client/src/app/components/nova/address/section/AddressPageTabbedSections.tsx +++ b/client/src/app/components/nova/address/section/AddressPageTabbedSections.tsx @@ -1,16 +1,16 @@ import React, { useState } from "react"; -import associatedOuputsMessage from "~assets/modals/stardust/address/associated-outputs.json"; -import foundriesMessage from "~assets/modals/stardust/alias/foundries.json"; -import stateMessage from "~assets/modals/stardust/alias/state.json"; +import associatedOuputsMessage from "~assets/modals/nova/address/associated-outputs.json"; +import foundriesMessage from "~assets/modals/nova/output/foundries.json"; +import anchorOutputMessage from "~assets/modals/nova/output/anchor.json"; import bicMessage from "~assets/modals/nova/account/bic.json"; import validatorMessage from "~assets/modals/nova/account/validator.json"; import delegationMessage from "~assets/modals/nova/delegation.json"; -import nftMetadataMessage from "~assets/modals/stardust/nft/metadata.json"; -import addressNftsMessage from "~assets/modals/stardust/address/nfts-in-wallet.json"; +import nftMetadataMessage from "~assets/modals/nova/nft/metadata.json"; +import nftOutputMessage from "~assets/modals/nova/nft/nft-output.json"; import TabbedSection from "../../../hoc/TabbedSection"; import AssociatedOutputs from "./association/AssociatedOutputs"; -import nativeTokensMessage from "~assets/modals/stardust/address/assets-in-wallet.json"; -import transactionHistoryMessage from "~assets/modals/stardust/address/transaction-history.json"; +import nativeTokensMessage from "~assets/modals/nova/address/native-token.json"; +import transactionHistoryMessage from "~assets/modals/nova/address/transaction-history.json"; import { IAccountAddressState } from "~/helpers/nova/hooks/useAccountAddressState"; import { INftAddressState } from "~/helpers/nova/hooks/useNftAddressState"; import { IAnchorAddressState } from "~/helpers/nova/hooks/useAnchorAddressState"; @@ -84,7 +84,7 @@ const buildDefaultTabsOptions = ( hidden: nftsCount === 0, counter: nftsCount, isLoading: isNftOutputsLoading, - infoContent: addressNftsMessage, + infoContent: nftOutputMessage, }, [DEFAULT_TABS.Delegation]: { disabled: delegationCount === 0, @@ -129,7 +129,7 @@ const buildAnchorAddressTabsOptions = (isAnchorStateTabDisabled: boolean, isAnch disabled: isAnchorStateTabDisabled, hidden: isAnchorStateTabDisabled, isLoading: isAnchorDetailsLoading, - infoContent: stateMessage, + infoContent: anchorOutputMessage, }, }); diff --git a/client/src/app/components/nova/block/payload/SignedTransactionPayload.tsx b/client/src/app/components/nova/block/payload/SignedTransactionPayload.tsx index 423d1bd29..2bc14255b 100644 --- a/client/src/app/components/nova/block/payload/SignedTransactionPayload.tsx +++ b/client/src/app/components/nova/block/payload/SignedTransactionPayload.tsx @@ -5,7 +5,7 @@ import Input from "~/app/components/nova/Input"; import OutputView from "~/app/components/nova/OutputView"; import Unlocks from "~/app/components/nova/Unlocks"; import { IInput } from "~/models/api/nova/IInput"; -import transactionPayloadMessage from "~assets/modals/stardust/block/transaction-payload.json"; +import transactionPayloadMessage from "~assets/modals/nova/block/transaction-payload.json"; import { useNetworkInfoNova } from "~helpers/nova/networkInfo"; import { getInputsPreExpandedConfig, getOutputsPreExpandedConfig } from "~helpers/nova/preExpandedConfig"; import { IPreExpandedConfig } from "~models/components"; diff --git a/client/src/app/routes/nova/FoundryPage.tsx b/client/src/app/routes/nova/FoundryPage.tsx index 5d60232dc..c17d24d9e 100644 --- a/client/src/app/routes/nova/FoundryPage.tsx +++ b/client/src/app/routes/nova/FoundryPage.tsx @@ -8,8 +8,8 @@ import { } from "@iota/sdk-wasm-nova/web"; import React, { useEffect, useState } from "react"; import { RouteComponentProps } from "react-router"; -import nativeTokensMessage from "~assets/modals/stardust/address/assets-in-wallet.json"; -import foundryMainHeaderInfo from "~assets/modals/stardust/foundry/main-header.json"; +import nativeTokensMessage from "~assets/modals/nova/address/native-token.json"; +import foundryMainHeaderInfo from "~assets/modals/nova/output/foundries.json"; import tokenSchemeIRC30 from "~assets/schemas/token-schema-IRC30.json"; import { useFoundryDetails } from "~helpers/nova/hooks/useFoundryDetails"; import { useIsMounted } from "~helpers/hooks/useIsMounted"; diff --git a/client/src/app/routes/nova/OutputPage.tsx b/client/src/app/routes/nova/OutputPage.tsx index 3933874b4..431167665 100644 --- a/client/src/app/routes/nova/OutputPage.tsx +++ b/client/src/app/routes/nova/OutputPage.tsx @@ -1,5 +1,5 @@ import React from "react"; -import mainMessage from "~assets/modals/stardust/output/main-header.json"; +import mainMessage from "~assets/modals/nova/output/main-header.json"; import { Link, RouteComponentProps } from "react-router-dom"; import Modal from "~/app/components/Modal"; import NotFound from "~/app/components/NotFound"; diff --git a/client/src/app/routes/nova/TransactionPage.tsx b/client/src/app/routes/nova/TransactionPage.tsx index df6412059..c8e60959c 100644 --- a/client/src/app/routes/nova/TransactionPage.tsx +++ b/client/src/app/routes/nova/TransactionPage.tsx @@ -2,8 +2,7 @@ import { AccountAddress, BasicBlockBody, SignedTransactionPayload, Utils } from "@iota/sdk-wasm-nova/web"; import React, { useEffect, useState } from "react"; import { RouteComponentProps } from "react-router-dom"; -import metadataInfoMessage from "~assets/modals/stardust/block/metadata.json"; -import transactionPayloadMessage from "~assets/modals/stardust/transaction/main-header.json"; +import transactionPayloadMessage from "~assets/modals/nova/block/transaction-payload.json"; import { useBlockMetadata } from "~helpers/nova/hooks/useBlockMetadata"; import { useInputsAndOutputs } from "~helpers/nova/hooks/useInputsAndOutputs"; import { useTransactionIncludedBlock } from "~helpers/nova/hooks/useTransactionIncludedBlock"; @@ -154,9 +153,7 @@ const TransactionPage: React.FC> = ({ isLoading: isInputsAndOutputsLoading, infoContent: transactionPayloadMessage, }, - [TRANSACTION_PAGE_TABS.Metadata]: { - infoContent: metadataInfoMessage, - }, + [TRANSACTION_PAGE_TABS.Metadata]: {}, }} > {tabbedSections} diff --git a/client/src/assets/modals/nova/address/associated-outputs.json b/client/src/assets/modals/nova/address/associated-outputs.json new file mode 100644 index 000000000..1149f3413 --- /dev/null +++ b/client/src/assets/modals/nova/address/associated-outputs.json @@ -0,0 +1,4 @@ +{ + "title": "Associated Outputs", + "description": "

All outputs that have unlock conditions or features which refer to this address.

" +} diff --git a/client/src/assets/modals/nova/address/main-header.json b/client/src/assets/modals/nova/address/main-header.json new file mode 100644 index 000000000..cb8b08ed7 --- /dev/null +++ b/client/src/assets/modals/nova/address/main-header.json @@ -0,0 +1,11 @@ +{ + "title": "Address", + "description": "

Addresses are similar to a personal account, something viewable and sendable to people you want to do business with. This personal account belongs to a seed. In the world of cryptography, a seed refers to a 'private key'. Simply put, you have the seed (your private key) keeping your address (your account) safe.

", + "links": [ + { + "label": "Read more", + "href": "https://wiki.iota.org/learn/smart-contracts/accounts-addresses-and-fees/", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/address/native-token.json b/client/src/assets/modals/nova/address/native-token.json new file mode 100644 index 000000000..b9c11bf2e --- /dev/null +++ b/client/src/assets/modals/nova/address/native-token.json @@ -0,0 +1,16 @@ +{ + "title": "Native Tokens", + "description": "

Native Tokens is a custom, user-defined tokens. Fungible tokens, called native tokens, are minted and melted in token foundries. You can think of them as of a custom currency. The list of Native Tokens in Basic, Alias, NFT and Foundry Outputs is replaced by a Native Token Feature that holds a single Native Token which can only be present in Basic and Foundry Outputs.

", + "links": [ + { + "label": "Read more", + "href": "https://wiki.iota.org/learn/protocols/stardust/core-concepts/multi-asset-ledger/#native-tokens", + "isExternal": true + }, + { + "label": "Native Token", + "href": "https://github.com/iotaledger/tips/blob/tip38/tips/TIP-0038/tip-0038.md", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/address/transaction-history.json b/client/src/assets/modals/nova/address/transaction-history.json new file mode 100644 index 000000000..5dea78832 --- /dev/null +++ b/client/src/assets/modals/nova/address/transaction-history.json @@ -0,0 +1,11 @@ +{ + "title": "Transaction History", + "description": "

The history of all transactions for this address. It displays all blocks that consume or create outputs targeting this address.

", + "links": [ + { + "label": "Read more", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#transactions", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/block/transaction-payload.json b/client/src/assets/modals/nova/block/transaction-payload.json new file mode 100644 index 000000000..6303b424b --- /dev/null +++ b/client/src/assets/modals/nova/block/transaction-payload.json @@ -0,0 +1,16 @@ +{ + "title": "Transaction Payload", + "description": "

This block is a transaction: the outputs on the left got consumed to create outputs on the right. You can find the owners of the new outputs in their address unlock conditions.

", + "links": [ + { + "label": "Read more", + "href": "https://wiki.iota.org/shimmer/introduction/explanations/ledger/simple_transfers", + "isExternal": true + }, + { + "label": "IOTA 2.0 Transaction Payload", + "href": "https://github.com/iotaledger/tips/blob/tip45/tips/TIP-0045/tip-0045.md", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/nft/metadata.json b/client/src/assets/modals/nova/nft/metadata.json new file mode 100644 index 000000000..d2088a6f3 --- /dev/null +++ b/client/src/assets/modals/nova/nft/metadata.json @@ -0,0 +1,16 @@ +{ + "title": "Metadata", + "description": "

IRC27 is a series of standards to support interoperable and universal NFT systems throughout the IOTA ecosystem, to provide a more robust and secure system for creators and buyers.

", + "links": [ + { + "label": "Read more", + "href": "https://github.com/iotaledger/tips/blob/main/tips/TIP-0027/tip-0027.md", + "isExternal": true + }, + { + "label": "Nft Output", + "href": "https://github.com/iotaledger/tips/blob/tip43/tips/TIP-0043/tip-0043.md#nft-output", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/nft/nft-output.json b/client/src/assets/modals/nova/nft/nft-output.json new file mode 100644 index 000000000..8b9203ab9 --- /dev/null +++ b/client/src/assets/modals/nova/nft/nft-output.json @@ -0,0 +1,16 @@ +{ + "title": "Non-fungible Tokens (NFTs)", + "description": "

Non-fungible tokens, so-called NFTs, are different from native tokens because each token must be unique and must have some immutable data attached to them.

", + "links": [ + { + "label": "Read more", + "href": "https://wiki.iota.org/learn/protocols/stardust/core-concepts/multi-asset-ledger/#non-fungible-tokens-nfts", + "isExternal": true + }, + { + "label": "NFT Output", + "href": "https://github.com/iotaledger/tips/blob/tip43/tips/TIP-0043/tip-0043.md", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/output/anchor.json b/client/src/assets/modals/nova/output/anchor.json new file mode 100644 index 000000000..d222d729b --- /dev/null +++ b/client/src/assets/modals/nova/output/anchor.json @@ -0,0 +1,11 @@ +{ + "title": "An Anchor Output", + "description": "

An Anchor Output represents an output in the ledger with two control levels and a permanent Anchor Address. The anchor owns other outputs that are locked under Anchor Address. The anchor keeps track of state transitions (State Index counter) and can be used to anchor layer 2 state as metadata into the UTXO ledger. The Anchor ID, the unique identifier, is generated deterministically by the protocol and is not allowed to change in any future state transitions.

", + "links": [ + { + "label": "Read more", + "href": "https://github.com/iotaledger/tips/blob/tip54/tips/TIP-0054/tip-0054.md", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/output/foundries.json b/client/src/assets/modals/nova/output/foundries.json new file mode 100644 index 000000000..b81efba3a --- /dev/null +++ b/client/src/assets/modals/nova/output/foundries.json @@ -0,0 +1,11 @@ +{ + "title": "Foundries", + "description": "

A foundry output is an output that controls the supply of user defined native tokens. It can mint and melt tokens according to the policy defined in the Token Scheme field of the output. Foundries can only be created and controlled by accounts.

", + "links": [ + { + "label": "Read more", + "href": "https://github.com/iotaledger/tips/blob/tip44/tips/TIP-0044/tip-0044.md#foundry-output", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/output/main-header.json b/client/src/assets/modals/nova/output/main-header.json new file mode 100644 index 000000000..d7e0fbe41 --- /dev/null +++ b/client/src/assets/modals/nova/output/main-header.json @@ -0,0 +1,11 @@ +{ + "title": "Output", + "description": "

Unspent outputs define the owner of the tokens, the kind of tokens and their amount, as well as conditions by which you can unlock them.

", + "links": [ + { + "label": "Read more", + "href": "https://wiki.iota.org/introduction/stardust/explanations/what_is_stardust/rethink_utxo", + "isExternal": true + } + ] +} diff --git a/client/src/assets/modals/nova/search/main-header.json b/client/src/assets/modals/nova/search/main-header.json new file mode 100644 index 000000000..22f0a64c6 --- /dev/null +++ b/client/src/assets/modals/nova/search/main-header.json @@ -0,0 +1,4 @@ +{ + "title": "Search Criteria", + "description": "

All hex searches work with and without 0x prefix.
The following formats are supported:

  1. Blocks 74 Hex characters
  2. Block using Transaction Id 74 Hex characters
  3. Account Id 66 Hex characters
  4. Nft Id 66 Hex characters
  5. Anchor Id 66 Hex characters
  6. Delegation Id 66 Hex characters
  7. Foundry Id 78 Hex characters
  8. Outputs 78 Hex characters
  9. Addresses Bech32 Format
  10. SlotIndex a unique index number
  11. Slot Commitment ID the identifier of the slot this block commits to.
  12. Epoch a unique index number
  13. Token Id 78 Hex characters
" +} diff --git a/client/src/assets/modals/nova/statistics/graphs.json b/client/src/assets/modals/nova/statistics/graphs.json index 9f69abab6..38efe3c0d 100644 --- a/client/src/assets/modals/nova/statistics/graphs.json +++ b/client/src/assets/modals/nova/statistics/graphs.json @@ -1,11 +1,11 @@ { "blocks": { "title": "Blocks", - "description": "

Shimmer nodes issue blocks to exchange data, including the information about token transactions. The higher readings could indicate a higher overall activity on the network.

", + "description": "

Nova nodes issue blocks to exchange data, including the information about token transactions. The higher readings could indicate a higher overall activity on the network.

", "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#blocks-and-outputs", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures#the-blocks", "isExternal": true } ] @@ -38,18 +38,18 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/data-and-value-transfer", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#transactions", "isExternal": true } ] }, "outputs": { "title": "Outputs", - "description": "

Shimmer tracks token ownership through outputs. As transactions create new outputs and exhaust the old ones, the total amount of base tokens stays the same, but their owners change. Outputs of special types are also used for NFTs, foundries, and aliases.

", + "description": "

As transactions create new outputs and exhaust the old ones, the total amount of base tokens stays the same, but their owners change. Outputs of special types are also used for NFTs, foundries, and anchors.

", "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#blocks-and-outputs", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#transactions", "isExternal": true } ] @@ -60,7 +60,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/outputs/#output-types", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#outputs", "isExternal": true } ] @@ -71,7 +71,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#storage-deposits", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#outputs", "isExternal": true } ] @@ -82,7 +82,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#unlock-conditions-addresses-and-seeds", + "href": "https://wiki.iota.org/learn/smart-contracts/accounts-addresses-and-fees/", "isExternal": true } ] @@ -93,7 +93,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#unlock-conditions-addresses-and-seeds", + "href": "https://wiki.iota.org/learn/smart-contracts/accounts-addresses-and-fees/", "isExternal": true } ] @@ -104,7 +104,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#unlock-conditions-addresses-and-seeds", + "href": "https://wiki.iota.org/learn/smart-contracts/accounts-addresses-and-fees/", "isExternal": true } ] @@ -115,7 +115,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/data-and-value-transfer", + "href": "https://wiki.iota.org/learn/smart-contracts/accounts-addresses-and-fees/", "isExternal": true } ] @@ -126,7 +126,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/data-and-value-transfer", + "href": "https://wiki.iota.org/learn/smart-contracts/accounts-addresses-and-fees/", "isExternal": true } ] @@ -137,7 +137,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/outputs", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#outputs", "isExternal": true } ] @@ -148,7 +148,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/outputs/#alias-output", + "href": "https://github.com/iotaledger/tips/blob/tip54/tips/TIP-0054/tip-0054.md", "isExternal": true } ] @@ -159,7 +159,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/outputs/#nft-output", + "href": "https://github.com/iotaledger/tips/blob/tip43/tips/TIP-0043/tip-0043.md#nft-output", "isExternal": true } ] @@ -236,7 +236,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#unlock-conditions-addresses-and-seeds", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#unlocks", "isExternal": true } ] @@ -247,7 +247,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/outputs/#unlock-conditions", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#unlocks", "isExternal": true } ] @@ -258,7 +258,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/outputs/#unlock-conditions", + "href": "https://wiki.iota.org/learn/protocols/iota2.0/core-concepts/data-structures/#unlocks", "isExternal": true } ] @@ -269,7 +269,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#storage-deposits", + "href": "https://wiki.iota.org/learn/protocols/stardust/core-concepts/storage-deposit", "isExternal": true } ] @@ -284,7 +284,7 @@ "links": [ { "label": "Read more", - "href": "https://wiki.iota.org/shimmer/learn/welcome/#storage-deposits", + "href": "https://github.com/iotaledger/tips/blob/tip47/tips/TIP-0047/tip-0047.md", "isExternal": true } ]