diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..061e9f9
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,24 @@
+{
+ "editor.detectIndentation": false,
+ "editor.insertSpaces": false,
+ "editor.lineNumbers": "on",
+ "editor.renderWhitespace": "all",
+ "editor.rulers": [
+ 80,
+ 160,
+ 240,
+ 320
+ ],
+ "editor.trimAutoWhitespace": true,
+ "editor.useTabStops": true,
+ "editor.wordWrapColumn": 1024,
+ "files.autoSave": "afterDelay",
+ "files.autoSaveDelay": 5000,
+ "files.insertFinalNewline": true,
+ "files.encoding": "utf8",
+ "git.enabled": true,
+ "git.rebaseWhenSync": true,
+ "editor.guides.indentation": true,
+ "html.format.endWithNewline": false,
+ "html.format.wrapLineLength": 0
+}
diff --git a/address-1.css b/address-1.css
new file mode 100644
index 0000000..a12db73
--- /dev/null
+++ b/address-1.css
@@ -0,0 +1,136 @@
+* {
+ box-sizing: border-box;
+}
+
+@supports (grid-template-rows: masonry) {
+ .card-host {
+ display: grid;
+ /* same as margin is not masony card */
+ gap: 2px;
+ grid-template-columns: repeat(auto-fill, 300px);
+ grid-template-rows: masonry;
+ justify-content: center;
+ }
+}
+
+@supports not (grid-template-rows: masonry) {
+ .card-host {
+ display: block;
+ margin: 0 auto;
+ }
+ .card-host:after {
+ content: "";
+ display: block;
+ clear: both;
+ }
+ .card {
+ /* same as gap in masonry */
+ margin: 2px;
+ }
+}
+
+.header {
+ width: 100%;
+ height: 50px;
+ background: white;
+ /* border: solid; */
+ font-size: larger;
+ /* border-radius: 10px; */
+ text-align: center;
+ padding-top: 15px;
+ margin-top: 20px;
+ margin-bottom: 30px;
+}
+
+.address_red {
+ color: red;
+}
+
+.footer {
+ display: inline-block;
+ position: block;
+ width: 100%;
+ height: auto;
+ left: 0;
+ bottom: 0;
+ border-top: solid rgb(18, 17, 17);
+ display: inline-block;
+ background: grey;
+}
+.support {
+ float: left;
+ display: block;
+}
+
+.developers {
+ padding-left: 20px;
+ float: left;
+ display: block;
+}
+
+.footer-link {
+ text-decoration: none;
+ color: gray;
+}
+
+.donations {
+ margin: 3%;
+ margin-top: 50px;
+ position: absolute;
+ right: 0;
+ color: grey;
+ text-decoration: none;
+}
+
+.card-host {
+ margin-bottom: 20px;
+ /* background: rgb(200, 0, 255); */
+}
+
+.donate-link {
+ text-decoration: none;
+ color: rgb(116, 206, 235);
+}
+
+.donate-link:hover {
+ color: red;
+}
+
+.donate-icon {
+ content: "\f004"; /* добавляем иконку дом */
+ font-family: FontAwesome;
+ color: red;
+}
+
+.card {
+ width: 300px;
+}
+.card-content {
+ /* margin-right: 20px; */
+ font-size: smaller;
+ word-wrap: break-word;
+ display: inline-block;
+ text-align: center;
+}
+ul {
+ /* background-color: azure; */
+ padding-left: 15px;
+}
+
+.circle-blockchain {
+ list-style-type: circle;
+}
+
+.currency-name {
+ display: inline-block;
+ text-align: center;
+}
+
+.currency-card {
+ /* height: 200px; */
+ /* background-color: red; */
+ border-radius: 15px;
+ border: solid;
+ padding: 5px;
+ background: white;
+}
diff --git a/address-1.html b/address-1.html
new file mode 100644
index 0000000..0a98780
--- /dev/null
+++ b/address-1.html
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+ Address
+
+
+
+
+
+
+
+
+
+ {{# assets }}
+ {{# blockchains }}
+
+
+
+
+

+
{{ id }}
+
{{ name }}
+
+
+
+ -
+ Blockchain: {{ blockchain }}
+
+
+
+ {{ #alternatives }}
+
+ {{ /alternatives }}
+
+
Token: {{ token }}
+
Balance: {{ balance }}
+
+ {{/ blockchains }}
+ {{/ assets }}
+
+
+
+
+
+
+
+
diff --git a/address.html b/address.html
new file mode 100644
index 0000000..0f89328
--- /dev/null
+++ b/address.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+ Blockchain Sonar's Explorer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/address.js b/address.js
new file mode 100644
index 0000000..47b616e
--- /dev/null
+++ b/address.js
@@ -0,0 +1,352 @@
+// http://127.0.0.1:5000/webapp/address/0xd3CdA913deB6f67967B99D67aCDFa1712C293601
+// http://127.0.0.1:5000/explorer/v1/address/0xd3CdA913deB6f67967B99D67aCDFa1712C293601
+
+window.onload = function () {
+ const url_frontend = (decodeURI(window.location.href));
+ const urlsplit = url_frontend.split("/");
+ const url_split = urlsplit[5];
+ const url_backend = 'http://127.0.0.1:5000/explorer/v1/address/' + url_split;
+
+ // const xhr = new XMLHttpRequest();
+ // xhr.open('GET', url_backend, true);
+ // xhr.send();
+ // xhr.onload = function () {
+ // const responseObj = xhr.response;
+ // buildUI(responseObj);
+ // };
+
+ // Хардкодимо відповіть від сервера
+ // Важаємо, що дані responseObj отримані с бекенду
+ const responseObj = {
+ "address": "0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "assets": {
+ "BNB": {
+ "alternatives": {
+ "com.bscscan": "https://bscscan.com/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.binance.mintscan": "https://binance.mintscan.io/account/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.etherscan": "https://etherscan.io/token/0xB8c77482e45F1F44dE1745F52C74426C631bDD52?a=0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.explorer.bitquery": "https://explorer.bitquery.io/bsc/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e"
+ },
+ "balance": null,
+ "blockchains": [
+ {
+ "blockchain": "Binance Smart Coin",
+ "token": false
+ },
+ {
+ "blockchain": "Ethereum",
+ "token": true
+ }
+ ],
+ "name": "Binance Coin"
+ },
+ "BUSD-T": {
+ "alternatives": {
+ "com.bscscan": "https://bscscan.com/token/0x55d398326f99059ff775485246999027b3197955?a=0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.explorer.bitquery": "https://explorer.bitquery.io/bsc/token/0x2b6828f4f227953fb36f42bda830b457afdc1c5e"
+ },
+ "balance": null,
+ "blockchains": [
+ {
+ "blockchain": "Ethereum",
+ "token": true
+ }
+ ],
+ "name": "BUSD Token"
+ },
+ "ETH": {
+ "alternatives": {
+ "com.bscscan": "https://bscscan.com/token/0x2170ed0880ac9a755fd29b2688956bd959f933f8?a=0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.etherscan": "https://etherscan.io/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.ethplorer": "https://ethplorer.io/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "org.etherchain": "https://etherchain.org/account/0x2b6828f4f227953fb36f42bda830b457afdc1c5e"
+ },
+ "balance": null,
+ "blockchains": [
+ {
+ "blockchain": "Ethereum",
+ "token": false
+ },
+ {
+ "blockchain": "Binance Smart Coin",
+ "token": true
+ }
+ ],
+ "name": "Ether"
+ },
+ "MATIC": {
+ "alternatives": {
+ "com.blockchain": "https://blockchair.com/ethereum/erc-20/token/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "com.polygonscan": "https://polygonscan.com/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.explorer.bitquery": "https://explorer.bitquery.io/matic/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e"
+ },
+ "balance": null,
+ "blockchains": [
+ {
+ "blockchain": "Ethereum",
+ "token": true
+ },
+ {
+ "blockchain": "Polygon",
+ "token": false
+ }
+ ],
+ "name": "Polygon"
+ },
+ "USDT": {
+ "alternatives": {
+ "io.etherscan": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7?a=0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "io.ethplorer": "https://ethplorer.io/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "org.etherchain": "https://etherchain.org/account/0x2b6828f4f227953fb36f42bda830b457afdc1c5e",
+ "org.tronscan": "https://tronscan.org/#/address/0x2b6828f4f227953fb36f42bda830b457afdc1c5e/"
+ },
+ "balance": null,
+ "blockchains": [
+ {
+ "blockchain": "Ethereum",
+ "token": true
+ },
+ {
+ "blockchain": "Tron",
+ "token": true
+ }
+ ],
+ "name": "Tether"
+ }
+ }
+ };
+
+ // Конвертуємо дані з сервера в дані для для побудови UI
+ const uiDataAssets = serverDataAssetsMapper(responseObj);
+
+ // Будуємо UI блоки по кожному Asset
+ const targetBlock = document.getElementById("content");
+ for(const uiDataAsset of uiDataAssets) {
+ const assetCode = uiDataAsset.assetCode;
+ const assetName = uiDataAsset.assetName;
+ const blockchains = uiDataAsset.blockchains;
+
+ const assetBlock = buildAssetUIBlock(assetCode, assetName, blockchains);
+
+ targetBlock.appendChild(assetBlock);
+ }
+}
+
+function serverDataAssetsMapper(serverData) {
+ const uiDataAssets = [];
+
+ const asset0 = {
+ assetCode: "USDT",
+ assetName: "Tether (USDT)",
+ blockchains: [
+ {
+ "blockchain": "Ethereum",
+ "balance": "42042.766477",
+ "token": true,
+ "alternatives": {
+ "io.etherscan": "https://etherscan.io/token/0xdac17f958d2ee523a2206206994597c13d831ec7?a=0xd3CdA913deB6f67967B99D67aCDFa1712C293601",
+ "io.ethplorer": "https://ethplorer.io/address/0xd3CdA913deB6f67967B99D67aCDFa1712C293601",
+ "org.etherchain": "https://etherchain.org/account/0xd3CdA913deB6f67967B99D67aCDFa1712C293601"
+ }
+ },
+ ]
+ };
+
+ const asset1 = {
+ assetCode: "MATIC",
+ assetName: "Polygon Coin",
+ blockchains: [
+ {
+ "blockchain": "Ethereum",
+ "balance": null,
+ "token": true,
+ "alternatives": {
+ "io.etherscan": "https://etherscan.io/token/0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0?a=0xd3CdA913deB6f67967B99D67aCDFa1712C293601",
+ "io.ethplorer": "https://ethplorer.io/address/0xd3CdA913deB6f67967B99D67aCDFa1712C293601",
+ "org.etherchain": "https://etherchain.org/account/0xd3CdA913deB6f67967B99D67aCDFa1712C293601",
+ "com.blockchain": "https://blockchair.com/ethereum/erc-20/token/0xd3CdA913deB6f67967B99D67aCDFa1712C293601"
+ }
+ },
+ {
+ "blockchain": "Polygon",
+ "balance": null,
+ "token": false,
+ "alternatives": {
+ "com.polygonscan": "https://polygonscan.com/address/0xd3CdA913deB6f67967B99D67aCDFa1712C293601",
+ "io.explorer.bitquery": "https://explorer.bitquery.io/matic/address/0xd3CdA913deB6f67967B99D67aCDFa1712C293601"
+ }
+ }
+ ]
+ };
+
+ const asset2 = {
+ assetCode: "BUSD-T",
+ assetName: "BUSD Token",
+ blockchains: [
+ {
+ "blockchain": "Binance Smart Chain",
+ "balance": "100",
+ "token": true,
+ "alternatives": {
+ "com.bscscan": "https://bscscan.com/token/0x55d398326f99059ff775485246999027b3197955?a=0x2b6828f4f227953fb36f42bda830b457afdc1c5e"
+ }
+ }
+ ]
+ }
+
+ uiDataAssets.push(asset0);
+ uiDataAssets.push(asset1);
+ uiDataAssets.push(asset2);
+
+ // TODO
+ // Використовуючи дані serverData будуемо
+ // набор assetData та додаємо в масив uiDataAssets
+ // як в прикладі вище
+ //
+
+
+ return uiDataAssets;
+}
+
+function buildUI(responseObj) {
+ const p = document.createElement("p");
+ p.innerText = responseObj;
+ document.getElementById("content").appendChild(p);
+}
+
+function buildAssetRootUIBlock() {
+ const assetRowBlock = document.createElement("div");
+ assetRowBlock.classList = "row asset-row";
+ return assetRowBlock;
+}
+
+function buildAssetRootColBlock() {
+ const assetRowColBlock = document.createElement("div");
+ assetRowColBlock.classList = "col-12";
+ return assetRowColBlock;
+}
+
+function buildAssetRootCardBlock() {
+ const assetRootCardBlock = document.createElement("div");
+ assetRootCardBlock.classList = "card";
+ return assetRootCardBlock;
+}
+
+function buildAssetRootCardHeaderBlock() {
+ const assetRootCardHeaderBlock = document.createElement("div");
+ assetRootCardHeaderBlock.classList = "card-header";
+ return assetRootCardHeaderBlock;
+}
+
+function buildAssetUIBlock(assetCode, balance, blockchains) {
+ const assetRowRootBlock = buildAssetRootUIBlock();
+
+ const assetRowRootColBlock = buildAssetRootColBlock();
+ assetRowRootBlock.appendChild(assetRowRootColBlock);
+
+ const assetRowCardRootBlock = buildAssetRootCardBlock();
+ assetRowRootColBlock.appendChild(assetRowCardRootBlock);
+
+ const assetRowRootCardHeaderBlock = buildAssetRootCardHeaderBlock();
+ assetRowCardRootBlock.appendChild(assetRowRootCardHeaderBlock);
+
+ const image = document.createElement('img');
+ image.src = "icons/assets/" + assetCode + "-56x56.png";
+ assetRowRootCardHeaderBlock.appendChild(image);
+
+ const assetCodeBlock = document.createElement("span");
+ assetCodeBlock.innerText = assetCode;
+ assetRowRootCardHeaderBlock.appendChild(assetCodeBlock);
+
+ const assetCardBodyBlock = document.createElement("div");
+ assetCardBodyBlock.classList = "card-body";
+ assetRowCardRootBlock.appendChild(assetCardBodyBlock);
+
+ const blockChainsRowBlock = document.createElement("div");
+ blockChainsRowBlock.classList = "row blockchain-row";
+ assetCardBodyBlock.appendChild(blockChainsRowBlock);
+
+ for (var blockchain of blockchains) {
+ const blockChainRowBlock = buildBlockchainUIBlock(blockchain, balance);
+ blockChainsRowBlock.appendChild(blockChainRowBlock);
+ }
+ return assetRowRootBlock;
+}
+
+function buildBlockchainUIBlock(blockchainInfo) {
+ const blockChainColBlock = document.createElement("div");
+ blockChainColBlock.classList = "col-6";
+
+ const blockChainCardBgLightBlock = document.createElement("div");
+ blockChainCardBgLightBlock.classList = "card bg-light";
+ blockChainColBlock.appendChild(blockChainCardBgLightBlock);
+
+ const blockChainCardHeaderBlock = document.createElement("div");
+ blockChainCardHeaderBlock.classList = "card-header";
+ let blockChainTitle;
+ if (blockchainInfo.token) { blockChainTitle = blockchainInfo.blockchain + " (Token)"; }
+ else { blockChainTitle = blockchainInfo.blockchain; }
+ blockChainCardHeaderBlock.innerText = blockChainTitle;
+ blockChainCardBgLightBlock.appendChild(blockChainCardHeaderBlock);
+
+ const blockChainCardBodyBlock = document.createElement("div");
+ blockChainCardBodyBlock.classList = "card-body";
+ blockChainCardBgLightBlock.appendChild(blockChainCardBodyBlock);
+
+ const blockChainCardBodyRowBlock = document.createElement("div");
+ blockChainCardBodyRowBlock.classList = "row";
+ blockChainCardBodyBlock.appendChild(blockChainCardBodyRowBlock);
+
+ const blockChainCardBodyCol3Block = document.createElement("div");
+ blockChainCardBodyCol3Block.classList = "col-6";
+ blockChainCardBodyRowBlock.appendChild(blockChainCardBodyCol3Block);
+
+ const blockChainCardBlock = document.createElement("div");
+ blockChainCardBlock.classList = "card";
+ blockChainCardBodyCol3Block.appendChild(blockChainCardBlock);
+
+ const blockChainCardBodyBalanceBlock = document.createElement("div");
+ blockChainCardBodyBalanceBlock.classList = "card-body";
+ blockChainCardBlock.appendChild(blockChainCardBodyBalanceBlock);
+
+ const assetCardTitleBalanceBlock = document.createElement("h5");
+ assetCardTitleBalanceBlock.classList = "card-title";
+ assetCardTitleBalanceBlock.innerText = "Balance:";
+ blockChainCardBodyBalanceBlock.appendChild(assetCardTitleBalanceBlock);
+
+ const assetCardTextBalanceBlock = document.createElement("p");
+ assetCardTextBalanceBlock.classList = "card-text";
+ let blockChainBalanceTitle;
+ if (blockchainInfo.balance !== null) { blockChainBalanceTitle = blockchainInfo.balance; }
+ else { blockChainBalanceTitle = "UNKNOWN"; }
+ assetCardTextBalanceBlock.innerText = blockChainBalanceTitle;
+ blockChainCardBodyBalanceBlock.appendChild(assetCardTextBalanceBlock);
+
+ const blockChainCardBodyCol9Block = document.createElement("div");
+ blockChainCardBodyCol9Block.classList = "col-6";
+ blockChainCardBodyRowBlock.appendChild(blockChainCardBodyCol9Block);
+
+ const blockChainCol9CardBlock = document.createElement("div");
+ blockChainCol9CardBlock.classList = "card";
+ blockChainCardBodyCol9Block.appendChild(blockChainCol9CardBlock);
+
+ const blockChainCol9CardBodyBlock = document.createElement("div");
+ blockChainCol9CardBodyBlock.classList = "card-body";
+ blockChainCol9CardBodyBlock.innerText = "Explorers";
+ blockChainCol9CardBlock.appendChild(blockChainCol9CardBodyBlock);
+
+ const assetCardTextExplorersULBlock = document.createElement("ul");
+ assetCardTextExplorersULBlock.classList = "card-text";
+ blockChainCol9CardBodyBlock.appendChild(assetCardTextExplorersULBlock);
+
+ for (var code in blockchainInfo.alternatives) {
+ const assetListExplorersLiBlock = document.createElement("li");
+ const el = document.createElement("a");
+ el.href = blockchainInfo.alternatives[code];
+ el.innerText = code;
+ assetListExplorersLiBlock.appendChild(el);
+ assetCardTextExplorersULBlock.appendChild(assetListExplorersLiBlock);
+ }
+
+ return blockChainColBlock;
+}
diff --git a/icons/assets/BNB-56x56.png b/icons/assets/BNB-56x56.png
new file mode 100644
index 0000000..bfad5d1
Binary files /dev/null and b/icons/assets/BNB-56x56.png differ
diff --git a/icons/assets/BUSD-T-56x56.png b/icons/assets/BUSD-T-56x56.png
new file mode 100644
index 0000000..6df9ff8
Binary files /dev/null and b/icons/assets/BUSD-T-56x56.png differ
diff --git a/icons/assets/ETH-56x56.png b/icons/assets/ETH-56x56.png
new file mode 100644
index 0000000..d85c013
Binary files /dev/null and b/icons/assets/ETH-56x56.png differ
diff --git a/icons/assets/MATIC-56x56.png b/icons/assets/MATIC-56x56.png
new file mode 100644
index 0000000..9fffa2e
Binary files /dev/null and b/icons/assets/MATIC-56x56.png differ
diff --git a/icons/assets/USDT-56x56.png b/icons/assets/USDT-56x56.png
new file mode 100644
index 0000000..c3333d1
Binary files /dev/null and b/icons/assets/USDT-56x56.png differ
diff --git a/icons/assets/backgroun-image-2.png b/icons/assets/backgroun-image-2.png
new file mode 100644
index 0000000..b8efeda
Binary files /dev/null and b/icons/assets/backgroun-image-2.png differ
diff --git a/icons/assets/backgroun-image.png b/icons/assets/backgroun-image.png
new file mode 100644
index 0000000..3bfb8c0
Binary files /dev/null and b/icons/assets/backgroun-image.png differ
diff --git a/icons/assets/coin-1.png b/icons/assets/coin-1.png
new file mode 100644
index 0000000..8c78b09
Binary files /dev/null and b/icons/assets/coin-1.png differ
diff --git a/icons/assets/coin-2.png b/icons/assets/coin-2.png
new file mode 100644
index 0000000..bc86c53
Binary files /dev/null and b/icons/assets/coin-2.png differ
diff --git a/icons/assets/coin-3.png b/icons/assets/coin-3.png
new file mode 100644
index 0000000..3fe1fe5
Binary files /dev/null and b/icons/assets/coin-3.png differ
diff --git a/icons/assets/coin-4.png b/icons/assets/coin-4.png
new file mode 100644
index 0000000..d840cef
Binary files /dev/null and b/icons/assets/coin-4.png differ
diff --git a/icons/assets/coin-5.png b/icons/assets/coin-5.png
new file mode 100644
index 0000000..b1ab198
Binary files /dev/null and b/icons/assets/coin-5.png differ
diff --git a/icons/assets/coin-6.png b/icons/assets/coin-6.png
new file mode 100644
index 0000000..d208954
Binary files /dev/null and b/icons/assets/coin-6.png differ
diff --git a/icons/assets/logo_icon.png b/icons/assets/logo_icon.png
new file mode 100644
index 0000000..3d2967b
Binary files /dev/null and b/icons/assets/logo_icon.png differ
diff --git a/icons/assets/logotip.png b/icons/assets/logotip.png
new file mode 100644
index 0000000..cfedbe1
Binary files /dev/null and b/icons/assets/logotip.png differ
diff --git a/icons/assets/magnifying_glass-20x20.png b/icons/assets/magnifying_glass-20x20.png
new file mode 100644
index 0000000..22d32b3
Binary files /dev/null and b/icons/assets/magnifying_glass-20x20.png differ
diff --git a/index.css b/index.css
new file mode 100644
index 0000000..7e0ea67
--- /dev/null
+++ b/index.css
@@ -0,0 +1,138 @@
+/* body {
+ font-family: "Montserrat", sans-serif;
+ background: lightgrey;
+ -webkit-background-size: cover;
+ -moz-background-size: cover;
+ -o-background-size: cover;
+ background-size: cover;
+ overflow: scroll;
+} */
+
+.logo_and_search {
+ /* display: flex; */
+ width: 39em;
+ height: 140px;
+ margin-left: auto;
+ margin-right: auto;
+ margin-top: 200px;
+ /* background: red; */
+}
+.logo {
+ /* background-color: blue; */
+ position: absolute;
+ margin-left: 5.5em;
+ /* margin-right: auto; */
+ margin-top: 10px;
+}
+
+.name_logo {
+ margin-left: 20px;
+ font-size: 50px;
+ font-weight: 800;
+ color: grey;
+}
+
+.search_content {
+ background: url(icons/assets/magnifying_glass-20x20.png) no-repeat;
+ background-position: 10px;
+ width: 39.3em;
+ height: 3em;
+ text-indent: 40px;
+ margin-top: 90px;
+ margin-left: auto;
+ margin-right: auto;
+ outline: none; /*убираем стандартную обводку браузера */
+ border-top-left-radius: 25px;
+ border-bottom-left-radius: 25px;
+ /* -moz-border-radius: 25px; */
+ /* -webkit-border-radius: 25px; */
+ /* border-radius: 25px; закругляем углы для остальных браузеров */
+ border: lightgray;
+ font-size: 14px;
+ background-color: white;
+ display: inline-block;
+}
+
+input::placeholder {
+ color: lightgrey;
+ font-size: 1.2em;
+ font-style: italic;
+}
+
+.button_search {
+ border: none;
+ text-align: center;
+ font-size: 16px;
+ color: grey;
+ border-top-right-radius: 25px;
+ border-bottom-right-radius: 25px;
+ /* -moz-border-radius: 25px;
+ -webkit-border-radius: 25px;
+ border-radius: 25px; */
+ background-color: white;
+ height: 2.575em;
+ cursor: pointer;
+}
+
+.button_search:active {
+ color: black;
+ background: darkgrey;
+}
+
+/* .button [type="submit"]:hover {
+ color: black;
+ background: grey;
+} */
+
+input[type="search"]::-webkit-search-cancel-button {
+ margin-right: 1em;
+}
+
+
+.list_coins {
+ display: flex;
+ flex-flow: row wrap;
+ justify-content: start;
+ width: 30em;
+ /* height: 20em; */
+ /* align-items: center; */
+ /* align-content: center; */
+ /* margin-top: 1.5em; */
+ margin-right: auto;
+ margin-left: auto;
+ /* background: green; */
+}
+
+.coins {
+ height: 60px;
+ width: 60px;
+ background: lightgrey;
+ margin-top: 3em;
+ margin-left: 3em;
+ /* padding: 0; */
+}
+
+/* #fat_footer {
+ position: fixed;
+ bottom: 0px;
+ height: 145px;
+ width: 100%;
+ background: #f4f0f0;
+ border-top: thin solid grey;
+ font-size: small;
+ color: #999;
+} */
+
+@media (min-width: 481px) and (max-width: 768px) {
+ .logo_and_search .search_content .list_coins {
+ float: none;
+ width: auto;
+ /* clear: both; */
+ }
+}
+@media (max-width: 481px) {
+ .logo_and_search .search_content .list_coins {
+ float: none;
+ width: auto;
+ }
+}
diff --git a/index.html b/index.html
index 467e8a7..73c93bc 100644
--- a/index.html
+++ b/index.html
@@ -1,12 +1,71 @@
-
+
+
+
+
+
+
+
+
+
+ Index
- Welcome to Blockchain Sonar's Explorer
- Under construction...
+
+
+
+

+
LAUNCHER
+
+
+
+
+
+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+

+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/index.js b/index.js
index e0f8eeb..e26769a 100644
--- a/index.js
+++ b/index.js
@@ -1,3 +1,3 @@
-window.onload=function() {
- alert("Hello, World!!!");
-}
\ No newline at end of file
+// window.onload=function() {
+// alert("Hello, World!!!");
+// }
diff --git a/main.css b/main.css
new file mode 100644
index 0000000..97a67a0
--- /dev/null
+++ b/main.css
@@ -0,0 +1,16 @@
+body {
+ font-family: "Montserrat", sans-serif;
+ background: lightgray;
+ -webkit-background-size: cover;
+ -moz-background-size: cover;
+ -o-background-size: cover;
+ background-size: cover;
+ overflow: scroll;
+ }
+ html,
+ body {
+ width: 100vw;
+ height: 100vh;
+ padding: 0;
+ margin: 0;
+ }