diff --git a/CHANGELOG.md b/CHANGELOG.md index 87c8ba29ca..2522f07096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ ## Current ### Features +- [#3333](https://github.com/poanetwork/blockscout/pull/3333) - Dark forest contract custom theme - [#3330](https://github.com/poanetwork/blockscout/pull/3330) - Caching of address transactions counter, remove query 10_000 rows limit diff --git a/apps/block_scout_web/assets/css/app.scss b/apps/block_scout_web/assets/css/app.scss index ded845b4b5..3ef6398fbb 100644 --- a/apps/block_scout_web/assets/css/app.scss +++ b/apps/block_scout_web/assets/css/app.scss @@ -121,6 +121,8 @@ $fa-font-path: "~@fortawesome/fontawesome-free/webfonts"; @import "theme/dark-theme"; +@import "theme/custom_contracts/dark-forest-theme"; + :export { dashboardBannerChartAxisFontColor: $dashboard-banner-chart-axis-font-color; dashboardLineColorMarket: $dashboard-line-color-market; diff --git a/apps/block_scout_web/assets/css/components/_btn_dropdown_line.scss b/apps/block_scout_web/assets/css/components/_btn_dropdown_line.scss index 32b2255732..7e65b0b5bd 100644 --- a/apps/block_scout_web/assets/css/components/_btn_dropdown_line.scss +++ b/apps/block_scout_web/assets/css/components/_btn_dropdown_line.scss @@ -8,6 +8,7 @@ $btn-dropdown-line-font: #333; border-color: $btn-dropdown-line-color; color: $btn-dropdown-line-font; outline: none !important; + margin-right: 20px; &:hover { background-color: $btn-dropdown-line-color-hover; diff --git a/apps/block_scout_web/assets/css/components/_card.scss b/apps/block_scout_web/assets/css/components/_card.scss index 2621f08903..d6170db424 100644 --- a/apps/block_scout_web/assets/css/components/_card.scss +++ b/apps/block_scout_web/assets/css/components/_card.scss @@ -275,4 +275,10 @@ $card-tab-icon-color-active: #fff !default; display: flex; height: 36px; line-height: 36px; +} + +.write-contract-btn { + padding: 6px 8px !important; + height: 31px !important; + font-size: 11px; } \ No newline at end of file diff --git a/apps/block_scout_web/assets/css/components/_pagination_container.scss b/apps/block_scout_web/assets/css/components/_pagination_container.scss index 876cf83eb0..2d17afdef4 100644 --- a/apps/block_scout_web/assets/css/components/_pagination_container.scss +++ b/apps/block_scout_web/assets/css/components/_pagination_container.scss @@ -115,6 +115,10 @@ $pagination-page-link-color-active: #fff !default; } } +.top-pagination-outer-container { + display: flex; +} + .logs-topbar .pagination-container { @media (min-width: 600px) { margin-left: 80px; diff --git a/apps/block_scout_web/assets/css/theme/custom_contracts/_dark-forest-theme.scss b/apps/block_scout_web/assets/css/theme/custom_contracts/_dark-forest-theme.scss new file mode 100644 index 0000000000..facf691c3f --- /dev/null +++ b/apps/block_scout_web/assets/css/theme/custom_contracts/_dark-forest-theme.scss @@ -0,0 +1,1007 @@ +$body-dark: #080808; // body background +$dark-bg: #111111; // hero shade +$dark-light-bg: $dark-bg; // pills bg shade +$dark-light: $dark-light-bg; // tile light top share +$labels-dark: #888888; // header nav, labels + +$dark-primary: #75f94d; +$dark-secondary: $dark-primary; +$dark-primary-alternate: $dark-primary; + +.dark-forest-theme-applied { + color: #ffffff; + + .dark-mode-changer--dark svg path { + fill: $dark-primary; + } + + // navbar + .navbar.navbar-primary { + background-color: $dark-light-bg !important; + } + .navbar-brand .navbar-logo { + filter: brightness(0) invert(1); + } + .navbar.navbar-primary .navbar-nav .nav-link { + color: $labels-dark; + .nav-link-icon { + svg path { + fill: $labels-dark; + } + } + &.active, &:hover { + .nav-link-icon { + svg path { + fill: $dark-primary; + } + } + &:before { + background-color: $dark-primary; + } + } + } + .navbar.navbar-primary .form-control { + background-color: $dark-light-bg !important; + border-color: $dark-light-bg !important; + color: #fff; + &::placeholder { + color: $labels-dark; + } + } + .navbar.navbar-primary .navbar-toggler .navbar-toggler-icon { + filter: invert(1); + } + + // footer + .footer { + background: $dark-light-bg; + color: $labels-dark; + } + .footer-social-icon { + color: $dark-primary !important + } + .footer-link { + color: $labels-dark; + } + .footer-social-icon:hover, + .footer-link:hover { + color: #fff; + } + .footer-list ul li::before { + background-color: $dark-secondary; + border-radius: 0px; + height: 2px; + width: 10px; + } + + // hero stats + + .layout-container .dashboard-banner-container { + background-image: none; + background-color: $dark-bg; + } + .dashboard-banner-network-plain-container, + .dashboard-banner-network-plain-container::after { + background-color: $dark-light-bg; + } + .dashboard-banner-network-stats-label, + .dashboard-banner-chart-legend .dashboard-banner-chart-legend-label { + color: $labels-dark; + } + .dashboard-banner-chart-legend .dashboard-banner-chart-legend-item:nth-child(1)::before { + background-color: $dark-primary; + } + .dashboard-banner-network-stats-item::before { + background-color: $dark-secondary; + } + .dashboard-banner-chart-legend .dashboard-banner-chart-legend-item:nth-child(2)::before { + background-color: $dark-secondary; + } + + // main container, layout, cards + .layout-container main { + background-color: $body-dark; + } + + .card { + border-radius: 0px; + background-color: $dark-light-bg; + box-shadow: 0 0 30px 0 rgba(23, 24, 41, 0.5); + } + + .card-title { + @media screen and (max-width: 768px) { + margin-top: 20px; + } + } + + .card-header { + border-bottom-color: darken($labels-dark, 30); + } + + .address-detail-hash-title { + color: #fff; + } + + .card-tabs { + border-radius: 0px; + border-bottom-color: $dark-light-bg; + } + + .card-tab { + background-color: transparent; + color: #fff; + border-radius: 0px; + &:hover:not(.active) { + background-color: rgba($dark-primary, .15); + color: $dark-primary; + } + &.active { + background-color: $dark-primary-alternate; + color: $body-dark; + } + } + + .card-tab .fa-check-circle { + color: $dark-primary; + } + + .card-tab.active .fa-check-circle { + color: $body-dark; + } + + .card-background-1 { + background-color: $dark-light-bg; + } + + // Components + a { + color: $dark-primary-alternate; + } + + a.tile-title { color: $dark-primary-alternate !important; } + .card-body { + a:not(.dropdown-item):not(.button):not([data-test=address_hash_link]):not(.alert-link):not([data-test=token_link]):not(#dropdown-tokens) { + color: $dark-primary-alternate ; + + &:hover { + color: $dark-primary-alternate; + } + } + } + + .tile { + border-top-color: $labels-dark; + border-bottom-color: $labels-dark; + border-right-color: $labels-dark; + border-radius: 0px; + background-color: $dark-light-bg; + color: $labels-dark; + &:not([class^="tile tile-type"]) { + border-left-color: $labels-dark; + } + &.tile-type-coin-balance { + border-left-color: $labels-dark; + } + .tile-title { + color: #fff; + } + .tile-transaction-type-block { + background-color: transparent; + } + } + .tile-bottom-contents { + background-color: $dark-bg; + } + a.tile-title { + color: #fff !important; + } + .tile.tile-type-block .tile-transaction-type-block a { + color: #fff; + } + .fade-up-blocks-chain .tile-type-block-animation { + background-color: $dark-light; + border-top-color: $dark-light; + border-right-color: $dark-light; + border-bottom-color: $dark-light; + } + .fade-up-blocks-chain .tile-type-block-animation:after { + background-color: $dark-light; + } + .cube-animation-title { + color: $labels-dark; + } + .tile .tile-body a, + .tile span[data-address-hash] { color: $dark-primary; } + .fade-up-blocks-chain .tile-type-block-animation .tile-type-line-up { + background-color: $dark-primary; + } + .tile.tile-type-block { + border-left-color: $dark-primary + } + .tile.tile-type-block .tile-status-label { + color: $dark-primary; + } + .tile.tile-type-block .tile-transaction-type-block { + border-right-color: $dark-primary; + border-top-color: $dark-primary; + border-bottom-color: $dark-primary; + } + .tile .progress { + background-color: rgba(#fff, .2); + } + .tile .progress .progress-bar { + background-color: $dark-primary; + } + .tile .tile-title-lg:not([data-balance-change-sign]) { + color: #fff; + } + + // btns + + .btn-line { + background-color: transparent; + border-color: $dark-primary; + color: $dark-primary; + &:hover { + border-color: $dark-primary; + background-color: $dark-primary; + color: #fff; + } + } + + .btn-copy-icon { + content: url(/images/custom-themes/dark-forest/copy.svg); + } + + .btn-qr-icon { + content: url(/images/custom-themes/dark-forest/qr.svg); + } + + .btn-copy-icon, .btn-qr-icon, .btn-address-card-icon .btn-contract-icon { + border-color: $dark-primary; + &:hover { + background-color: $labels-dark; + } + } + + // pagination + .pagination-container .pagination .page-link { + color: #fff !important; + border-color: #fff; + background-color: $dark-light-bg; + border-radius: 0px; + padding: 15px; + &:not(.no-hover):hover { + color: #fff; + background-color: $dark-light-bg; + path { + fill: #fff; + } + } + &[disabled] { + color: $labels-dark; + border-color: $labels-dark; + background-color: $dark-light-bg; + } + } + + // dropdown + .dropdown-menu { + background-color: $dark-light; + border-left-color: $dark-light; + border-right-color: $dark-light; + border-bottom-color: $dark-light; + } + + .dropdown-item { + color: #fff; + &:hover { + background-color: rgba(#fff, .1); + } + } + .dropdown-item.active { + background-color: $dark-primary; + } + .btn-dropdown-line { + background-color: $dark-light; + border-color: #fff; + color: #fff; + height: 32px; + } + + // table + .stakes-table-th { + background-color: $dark-light; + color: $labels-dark; + } + .stakes-td { + border-bottom-color: darken($labels-dark, 30); + } + .table th, .table td { + border-top-color: darken($labels-dark, 30); + } + hr { + border-top-color: darken($labels-dark, 30); + } + + // api's + .api-anchors-list { + background-color: $dark-light; + } + .api-doc-list-item { + border-bottom-color: darken($labels-dark, 30); + } + .card-subtitle, + .api-anchors-list-item-title, + .api-doc-list-item-title { + color: #fff; + } + .api-text-monospace { + color: $dark-primary; + } + .api-text-monospace-background { + background-color: rgba($dark-primary, .15); + } + .badge { + border-radius: 0px; + } + .badge.badge-neutral { + background-color: rgba($dark-primary, .15); + color: $dark-primary; + } + .badge.badge-danger { + background-color: #fd906b; + color: $body-dark; + } + .badge.badge-success { + background-color: $dark-primary; + color: $body-dark; + } + + // download csv button + .download-all-transactions .download-all-transactions-link svg path { + fill: $dark-primary; + } + + //tooltips + .tooltip .arrow:before { + border-top-color: $dark-primary; + border-bottom-color: $dark-primary; + } + .tooltip > .tooltip-inner { + border-radius: 0px; + background-color: $dark-primary; + } + + //network select + .network-selector-overlay { + background-color: rgba($dark-bg, .9); + } + .network-selector { + background-color: $dark-light-bg; + } + .network-selector-title { + color: #fff; + } + .network-selector-text { + color: $labels-dark; + } + .network-selector-close path { + fill: #fff; + } + .network-selector-search-container { + background-color: $dark-light; + } + .network-selector-search-container path { + fill: $labels-dark; + } + .network-selector-search-input { + color: #fff !important; + &::placeholder { + color: $labels-dark; + } + } + .network-selector-tab { + color: $labels-dark; + &:hover, &.active { + color: #fff; + } + &.active { + &:after { + background-color: $dark-primary; + } + } + } + .network-selector-item, + .network-selector-tabs-container { + border-bottom-color: darken($labels-dark, 30); + } + .network-selector-item-title { + color: #fff; + } + .network-selector-item-type { + color: $labels-dark; + } + .radio .radio-icon { + border-color: $labels-dark + } + .network-selector-item-url:hover .network-selector-item-type { + color: #fff; + } + + //coin dropdown + .token-balance-dropdown.dropdown-menu { + border-color: $dark-light !important; + box-shadow: 0 0 30px 0 rgba(23, 24, 41, 0.5) !important; + } + .token-balance-dropdown .dropdown-search-icon path { + fill: $labels-dark; + } + .token-balance-dropdown .dropdown-search-field { + background-color: $dark-light; + border-color: $dark-light; + color: #fff; + &::placeholder { + color: $labels-dark; + } + } + .token-balance-dropdown[aria-labelledby="dropdown-tokens"] .dropdown-items .dropdown-item:hover { + color: #fff !important; + } + .dropdown-header { + color: $labels-dark; + } + .border-bottom { + border-bottom-color: darken($labels-dark, 30) !important; + } + + // coin balance history chart + .chartjs-render-monitor[data-chart="coinBalanceHistoryChart"] { + filter: brightness(0) invert(1) !important; + } + + // logs search + .logs-search-input, .logs-search-btn, .logs-search-btn-cancel { + background-color: $dark-light; + border-color: $dark-light; + color: #fff; + } + + .logs-search-btn { + color: $labels-dark; + } + + .logs-search-btn { + &:hover { + background-color: $dark-primary; + color: #fff; + } + } + + .logs-search-input { + &::placeholder { + color: $labels-dark; + } + } + + // code + pre { + color: #fff; + } + + // info allert + .alert-info { + color: $labels-dark; + background-color: $dark-light; + border-color: $dark-light; + } + + // dark text + .text-dark { + color: #fff !important; + } + + // Contract Verification + .new-smart-contract-container { + background-color: $dark-light-bg; + background-image: linear-gradient(to bottom right, $dark-light 100%, $dark-light 100%); + @media (max-width: 991.98px) { + background-image: none; + } + } + .smart-contract-form-group-inner-wrapper .smart-contract-form-group-tooltip { + color: $labels-dark; + } + .smart-contract-title { + color: #fff; + } + .smart-contract-form-group-inner-wrapper > label { + color: $labels-dark; + } + .smart-contract-form-buttons { + border-top-color: darken($labels-dark, 30); + .btn-no-border { + background-color: $dark-light; + border-color: $dark-light; + color: #fff; + &:hover { + background-color: $dark-primary; + color: #fff; + } + } + } + .add-contract-libraries-wrapper { + border-top-color: darken($labels-dark, 30); + } + + .token-tile-view-more:before, .token-tile-view-more:after { + border-top-color: darken($labels-dark, 30); + border-bottom-color: darken($labels-dark, 30); + } + + // Form Controlls + .form-control { + background-color: $dark-light; + border-color: #fff; + color: #fff; + &::placeholder { + color: $labels-dark; + } + &:focus { + background-color: $dark-light; + border-color: $dark-primary; + color: #fff; + } + } + .radio-big .radio-icon { + border-color: $labels-dark; + } + .radio-big input[type="radio"]:checked + .radio-icon { + border-color: $dark-primary; + } + .radio-big input[type="radio"]:checked + .radio-icon::before { + background: $dark-primary; + } + .radio-big .radio-text { + color: #fff; + } + + // Content loading placeholders + .tile-loader, .table-content-loader { + background-color: $labels-dark !important; + &:before { + background: linear-gradient(to right, $labels-dark 2%, lighten($labels-dark, 3) 18%, $labels-dark 33%); + } + } + + // Verify other explorers + .verify-other-explorers-elem { + border-color: darken($labels-dark, 30); + .exp-logo { + border-right-color: darken($labels-dark, 30); + } + .exp-content { + h3 { + color: #fff; + } + div { + color: $labels-dark; + } + } + } + .verify-other-explorers-more { + border-color: $dark-primary; + svg path { + fill: $dark-primary; + } + &:hover { + background-color: $dark-primary; + svg path { + fill: #fff; + } + } + } + .verify-other-explorers-elem { + &:hover { + text-decoration: none; + color: #fff; + .exp-content { + h3, div { + color: #fff; + } + } + } + } + + #explorersModal { + .modal-title { + color: #fff; + } + + .text-muted { + color: $labels-dark; + } + + .modal-footer { + border-top-color: darken($labels-dark, 30); + } + + .modal-content { + background-color: $dark-light-bg; + + .btn-primary { + background-color: $dark-primary; + border-color: $dark-primary; + &:hover { + background-color: $dark-primary; + border-color: $dark-primary; + } + } + } + + .verify-other-explorers-cell { + .exp-logo { + color: #fff; + } + } + + .close { + color: #fff; + } + } + + // API docs dropdown content + .api-doc-parameters-list-item-description, + .api-doc-parameters-list-item-title, + .api-doc-parameters-list-title, + .api-doc-list-item-controls-view-more { + color: #fff; + } + + .api-doc-parameters-list { + border-bottom-color: darken($labels-dark, 30); + } + .api-doc-parameters-container { + border-top-color: darken($labels-dark, 30); + } + .api-doc-tab { + color: $dark-primary !important; + &.active { + border-bottom-color: $dark-primary; + } + } + + // Common Buttons + .btn-secondary, .button-secondary { + background-color: transparent; + border-color: $dark-primary; + color: $dark-primary; + &:hover { + background-color: $dark-primary; + border-color: $dark-primary; + color: #fff; + } + } + + .awesomplete { + & > ul { + background: $dark-light-bg; + &:before { + background: $dark-light-bg; + } + li { + &:hover { + background-color: $dark-primary; + color: #fff; + mark { + background: darken($dark-primary, 10); + color: #fff; + } + } + } + } + mark { + background: $dark-primary; + color: #fff; + } + } + + // Decoded data + .table.thead-light.table-bordered { + color: #fff !important; + } + .table-bordered, .table-bordered td, .table-bordered th { + border-color: darken($labels-dark, 30); + } + .dark-theme-applied .table td, .dark-theme-applied .table th, .dark-theme-applied hr { + border-top-color: darken($labels-dark, 30); + } + .btn-copy-ico svg path { + fill: #fff; + } + + // pre + .pre-scrollable.line-numbers, .hljs { + background: $dark-light; + color: #fff; + } + + .hljs-comment { + color: $labels-dark; + } + + .hljs-title, .hljs-section { + color: #ff2294; + } + + .hljs-type, .hljs-string, .hljs-number, .hljs-selector-id, .hljs-selector-class, .hljs-quote, .hljs-template-tag, .hljs-deletion { + color: #ff2294; + } + + .hljs-literal, .hljs-built_in, .hljs-bullet, .hljs-code, .hljs-addition { + color: #20dd94; + } + + .line-numbers [data-line-number]:before { + color: #3f436b !important; + border-right-color: #3f436b !important; + } + + // 'text dark' label + .text-dark { + color: #fff; + } + + // validator info + #validatorModal { + .modal-title { + color: #fff; + } + + .text-muted { + color: $labels-dark; + } + + .modal-footer { + border-top-color: darken($labels-dark, 30); + } + + .modal-content { + background-color: $dark-light-bg; + + .btn-primary { + background-color: $dark-primary; + border-color: $dark-primary; + &:hover { + background-color: $dark-primary; + border-color: $dark-primary; + } + } + } + + .close { + color: #fff; + } + } + + #qrModal { + .modal-content { + border-radius: 0px; + + .btn-primary { + border-radius: 0px; + background-color: $dark-primary; + border-color: $dark-primary; + &:hover { + background-color: $dark-primary; + border-color: $dark-primary; + } + } + } + } + + // alerts + .alert-link { + color: $labels-dark; + } + + .alert-danger { + background-color: $dark-light; + border-color: $dark-light; + .alert-link { + color: $alert-danger-color; + } + } + + .tile .alert { + background: rgba(#000, .1); + } + + // primary buttons + .button { + border-radius: 0px; + } + + .btn-full-primary, .button-primary { + background: $dark-primary; + border-color: $dark-primary; + color: #fff; + &:hover { + background: darken($dark-primary, 6); + border-color: darken($dark-primary, 6); + color: #fff; + } + } + + .logo-text { + color: #fff; + } + + .bridged-token-label.omni { + background-color: $labels-dark; + } + + .dropdown-item { + .external-link-icon { + path { + fill: #fff; + } + } + + & { + &.active, + &:hover, + &:focus { + .external-link-icon { + path { + fill: #fff; + } + } + } + } + } + + .tooltip-inversed-color { + .tooltip-inner { + background-color: $btn-line-color !important; + color: #fff !important; + } + } + + .tooltip-inversed-color.bs-tooltip-top .arrow::before, + .tooltip-inversed-color.bs-tooltip-auto[x-placement^="top"] .arrow::before { + border-top-color: $btn-line-color !important; + } + + .tooltip-inversed-color.bs-tooltip-right .arrow::before, + .tooltip-inversed-color.bs-tooltip-auto[x-placement^="right"] .arrow::before { + border-right-color: $btn-line-color !important; + } + + .tooltip-inversed-color.bs-tooltip-bottom .arrow::before, + .tooltip-inversed-color.bs-tooltip-auto[x-placement^="bottom"] .arrow::before { + border-bottom-color: $btn-line-color !important; + } + + + .tooltip-inversed-color.bs-tooltip-left .arrow::before, + .tooltip-inversed-color.bs-tooltip-auto[x-placement^="left"] .arrow::before { + border-left-color: $btn-line-color !important; + } + + .active-dot-icon { + circle { + fill: $dark-primary; + } + } + + .tile.tile-type-coin-balance [data-balance-change-sign="Negative"] { + color: #e87293; + } + + .tile.tile-type-coin-balance [data-balance-change-sign="Positive"] { + color: $dark-primary; + } + + ::-webkit-scrollbar { + width: 12px; + } + + ::-webkit-scrollbar-track { + -webkit-box-shadow: inset 0 0 6px $dark-bg; + border-radius: 0px; + } + + ::-webkit-scrollbar-thumb { + border-radius: 0px; + background: $dark-primary; + } + + .fa-check-circle { + content: url(/images/custom-themes/dark-forest/union.svg); + } + + .custom-balance-icon { + content: url(/images/custom-themes/dark-forest/pic_balance.svg); + margin-right: 0px; + margin-left: auto; + max-width: 70%; + } + + .custom-dapp-header-container { + display: flex; + margin-bottom: 30px; + @media screen and (max-width: 768px) { + display: inline; + } + } + + .custom-dapp-header-description-container { + display: contents; + } + + .custom-address-icon { + content: url(/images/custom-themes/dark-forest/dark_forrest_logo.svg); + + @media screen and (max-width: 768px) { + margin-bottom: 20px; + } + } + + .custom-address-details{ + margin-top: 8px; + @media (min-width: 576px) { + margin-left: 0; + } + @media (min-width: 768px) { + margin-left: 20px; + } + @media (min-width: 992px) { + margin-left: 20px; + } + @media (min-width: 1200px) { + margin-left: 20px; + } + color: $labels-dark; + } + + .application-icon-link { + margin-left: auto; + } + + .application-icon { + content: url(/images/custom-themes/dark-forest/planet.svg); + @media screen and (max-width: 768px) { + float: right; + } + } + + .csv-icon { + visibility: hidden; + } +} + +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.5); + border: none; +} + +.dark-theme-applied .dropdown-item { + background-color: $dark-light!important; + color: #fff !important; +} + +.dark-theme-applied .dropdown-item.active:not(.header), .dark-theme-applied .dropdown-item:not(.header):hover, .dark-theme-applied .dropdown-item:not(.header):focus { + background-image: none; + width: 100%; + background-color: #3f426c !important; +} + +.dark-theme-applied .dropdown-item.active.header, .dark-theme-applied .dropdown-item.header:hover, .dark-theme-applied .dropdown-item.header:focus { + background-color: $dark-light !important; +} + +.modal-open .modal { + background-color: $dark-bg !important; +} \ No newline at end of file diff --git a/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/copy.svg b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/copy.svg new file mode 100644 index 0000000000..56f7551510 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/copy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/dark_forrest_logo.svg b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/dark_forrest_logo.svg new file mode 100644 index 0000000000..21ffb9d5c4 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/dark_forrest_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/pic_balance.svg b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/pic_balance.svg new file mode 100644 index 0000000000..cfe8f394b7 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/pic_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/planet.svg b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/planet.svg new file mode 100644 index 0000000000..0fc63f7834 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/planet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/qr.svg b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/qr.svg new file mode 100644 index 0000000000..fb13829530 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/qr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/union.svg b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/union.svg new file mode 100644 index 0000000000..56a4854454 --- /dev/null +++ b/apps/block_scout_web/assets/static/images/custom-themes/dark-forest/union.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/block_scout_web/config/config.exs b/apps/block_scout_web/config/config.exs index 4d5d3c6fe8..f75559536d 100644 --- a/apps/block_scout_web/config/config.exs +++ b/apps/block_scout_web/config/config.exs @@ -41,7 +41,8 @@ config :block_scout_web, foreign_json_rpc: System.get_env("FOREIGN_JSON_RPC", ""), gas_price: System.get_env("GAS_PRICE", nil), restricted_list: System.get_env("RESTRICTED_LIST", nil), - restricted_list_key: System.get_env("RESTRICTED_LIST_KEY", nil) + restricted_list_key: System.get_env("RESTRICTED_LIST_KEY", nil), + dark_forest_address: System.get_env("CUSTOM_CONTRACT_ADDRESS_DARK_FOREST") config :block_scout_web, BlockScoutWeb.Counters.BlocksIndexedCounter, enabled: true diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address/_balance_card.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address/_balance_card.html.eex index c8140fb812..6f1b29767d 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/address/_balance_card.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/address/_balance_card.html.eex @@ -1,6 +1,9 @@
-

<%= gettext "Balance" %>

+
+

<%= gettext "Balance" %>

+ +

+ <% dark_forest_address_var = Application.get_env(:block_scout_web, :dark_forest_address) %> + <% dark_forest_address = if dark_forest_address_var, do: String.downcase(dark_forest_address_var), else: nil %> + <% current_address = "0x" <> Base.encode16(@address.hash.bytes, case: :lower) %> +
+ <%= cond do %> + <% current_address == dark_forest_address -> %> +
+ +
+ + <%= gettext "zkSnark space warfare (v0.4)" %> + + +
+
+ <% true -> %> + <%= nil %> + <% end %>

<%= address_title(@address) %> <%= gettext "Details" %> diff --git a/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex b/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex index 5d45a773dc..7f7a1b7db2 100644 --- a/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex +++ b/apps/block_scout_web/lib/block_scout_web/templates/address_transaction/index.html.eex @@ -13,38 +13,37 @@

<%= gettext "Transactions" %>

-