commit
42934128fa
41 changed files with 2224 additions and 0 deletions
28
README.md
Normal file
28
README.md
Normal file
|
@ -0,0 +1,28 @@
|
|||
## Revuo XMR Theme
|
||||
|
||||
The Revuo XMR theme is a customized theme for the Revuo Monero newsletter.
|
||||
|
||||
[Emerald](https://github.com/rottenwheel/revuo-monero-theme/) is the theme used by Revuo. It is a minimal and mobile-first blog theme, originally for Jekyll, ported to Hugo by [recanman](https://github.com/recanman).
|
||||
|
||||
## Setup & usage
|
||||
|
||||
Make sure you have Go and Hugo installed. If not, follow the instructions on the [Hugo website](https://gohugo.io/getting-started/installing/).
|
||||
|
||||
To use the Revuo XMR theme, clone the repository as a submodule and add it to your Hugo site:
|
||||
|
||||
```bash
|
||||
git submodule add https://github.com/rottenwheel/revuoxmrtheme.git themes/revuo-xmr
|
||||
```
|
||||
|
||||
Then, add the theme to your site's configuration file:
|
||||
|
||||
```toml
|
||||
theme = "revuo-xmr"
|
||||
```
|
||||
|
||||
## Customization
|
||||
|
||||
Please see [config.toml.example](./config.toml.example) for an example configuration file. You can copy this file to your site's root directory and rename it to `config.toml`.
|
||||
|
||||
## License
|
||||
Revuo Monero is released under GNU Affero General Public License v3.0. See [LICENSE](./LICENSE) for more information.
|
89
archetypes/weekly.md
Normal file
89
archetypes/weekly.md
Normal file
|
@ -0,0 +1,89 @@
|
|||
---
|
||||
type: weekly
|
||||
layout: weekly
|
||||
|
||||
date: "{{ .Date }}"
|
||||
issuenumber: {{ len (readDir "content/weekly") }}
|
||||
title: "Issue {{ len (readDir "content/weekly") }}: {{ dateFormat "January 02" .Date }} - {{ dateFormat "02, 2006" ((.Date | time.AsTime).AddDate 0 0 7) }}"
|
||||
---
|
||||
|
||||
### Table of Contents:
|
||||
|
||||
- [Recent News](#news)
|
||||
- [Upcoming Events](#events)
|
||||
- [CCS Proposals](#proposals)
|
||||
- [Price & Blockchain Stats](#stats)
|
||||
- [Volunteer Opportunities](#volunteer)
|
||||
- [Donate](#donate)
|
||||
|
||||
### Recent News
|
||||
|
||||
{{% newsbyte %}}
|
||||
Haveno DEX [v1.0.8](https://github.com/haveno-dex/haveno/releases/tag/1.0.8) adding scripts to run Haveno on Tails OS; miscellaneous translations; general enhancements and a few bug fixes. Haveno Reto [v1.0.8](https://github.com/retoaccess1/haveno-reto/releases/tag/v1.0.8).
|
||||
{{% /newsbyte %}}
|
||||
|
||||
### Upcoming Events
|
||||
|
||||
{{% event "July 1, 2024 (Monday) - 18:00 UTC" %}}
|
||||
Seraphis Wallet Workgroup Meeting - [#no-wallet-left-behind](irc://irc.libera.chat/#no-wallet-left-behind) IRC channel; Matrix [room](https://matrix.to/#/#no-wallet-left-behind:monero.social).
|
||||
{{% /event %}}
|
||||
|
||||
### CCS Proposal Ideas
|
||||
|
||||
Below you can find some CCS proposal ideas open for discussion.
|
||||
|
||||
{{% ccs_item link="jeffro256-full-time-2024Q3" author="jeffro256" %}}
|
||||
full-time development 2024Q3
|
||||
{{% /ccs_item %}}
|
||||
|
||||
### CCS Proposals Need Funding
|
||||
|
||||
{{% ccs_item link="jeffro256-full-time-2024Q3" author="jeffro256" goal=146 raised=30.04 %}}
|
||||
full-time development 2024Q3
|
||||
{{% /ccs_item %}}
|
||||
|
||||
### Price & Blockchain Stats
|
||||
|
||||
###### Blockchain Stats
|
||||
|
||||
{{< bc_stats
|
||||
height="0"
|
||||
hashrate="0 GH/s"
|
||||
txs_per_block="0"
|
||||
avg_txs_per_day="0"
|
||||
block_reward="0.6"
|
||||
|
||||
date="January 1, 2024"
|
||||
>}}
|
||||
|
||||
###### XMR Blocks Distribution in last 1000 blocks
|
||||
|
||||
![Hashrate Pool Distribution Pie Chart](./hash.png)
|
||||
|
||||
###### Price & Performance
|
||||
|
||||
{{< price_performance
|
||||
market_cap="3,209,863,981"
|
||||
street_price="190.07"
|
||||
|
||||
table_date="06/13/24"
|
||||
price_usd="173.67,+5.4,+29.9,+24.7"
|
||||
price_eur="160.61,+6.8,+30.9,+25.4"
|
||||
price_btc="0.00258,+12.4,+19.8,-51.9"
|
||||
|
||||
date="June 6, 2024"
|
||||
>}}
|
||||
|
||||
###### XMR Price Graph
|
||||
|
||||
![XMR Price Graph](./price.png)
|
||||
|
||||
Sources: [miningpoolstats.stream](https://miningpoolstats.stream/monero); [bitinfocharts.com](https://bitinfocharts.com/monero/); [coingecko.com](https://www.coingecko.com/en/coins/monero); [localmonero.co blocks](https://localmonero.co/blocks); [monero.boats](https://monero.boats/).
|
||||
|
||||
{{< volunteer >}}
|
||||
{{% volunteer_item title="Test Monero Core Software" link="https://github.com/monero-project/monero" %}}
|
||||
Anyone with moderate technical ability is encouraged to try to build and run Monero nightlies. Do not trust it with your Monero, but feel free to open an Issue on GitHub as problems arise. Instructions to build on your OS of choice can be found here.
|
||||
{{% /volunteer_item %}}
|
||||
{{< /volunteer >}}
|
||||
|
||||
{{< support />}}
|
75
assets/css/base.scss
Normal file
75
assets/css/base.scss
Normal file
|
@ -0,0 +1,75 @@
|
|||
/*
|
||||
* Emerald is a simple blog theme built for Jekyll.
|
||||
*/
|
||||
|
||||
/*- Base reset -*/
|
||||
|
||||
* {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html,
|
||||
body,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
p,
|
||||
ul,
|
||||
ol,
|
||||
li,
|
||||
img {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
/*- Base color -*/
|
||||
|
||||
$main-color: #E9E9E9;
|
||||
$background-color: #0F0F0F;
|
||||
$text-color: #888888;
|
||||
|
||||
/*- Base settings -*/
|
||||
|
||||
html {
|
||||
background-color: $background-color;
|
||||
font-size: 16px;
|
||||
scroll-behavior: smooth;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
line-height: 1.5;
|
||||
color: $text-color;
|
||||
}
|
||||
|
||||
|
||||
/*- Link -*/
|
||||
a {
|
||||
color: $main-color;
|
||||
outline: 0;
|
||||
border-bottom: 2px dotted #6a6d72;
|
||||
text-decoration: none;
|
||||
font-weight: 700;
|
||||
-webkit-transition: all .3s ease;
|
||||
-moz-transition: all .3s ease;
|
||||
-ms-transition: all .3s ease;
|
||||
-o-transition: all .3s ease;
|
||||
transition: all .3s ease;
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: #999999;
|
||||
border-bottom: 2px dotted #333333;
|
||||
}
|
||||
}
|
||||
|
||||
a#nav-menu {
|
||||
border-bottom: none;
|
||||
}
|
417
assets/css/custom.scss
Normal file
417
assets/css/custom.scss
Normal file
|
@ -0,0 +1,417 @@
|
|||
p.note {
|
||||
font-size: 0.7em;
|
||||
margin-bottom: 1rem;
|
||||
margin-top: -1rem;
|
||||
}
|
||||
|
||||
.bcstats {
|
||||
background-color: var(--block-bg-color);
|
||||
margin-bottom: 1.3334rem;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.bcstats p {
|
||||
padding: 1em;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.bcstats p:nth-child(even) {
|
||||
background-color: var(--blog-bg-color-secondary);
|
||||
}
|
||||
|
||||
$breakpoint-alpha: 480px; // adjust to your needs
|
||||
|
||||
p.table-title {
|
||||
margin: 0;
|
||||
padding-bottom: 0.5em;
|
||||
font-weight: 700;
|
||||
font-size: 16px;
|
||||
padding-top: 0.5em;
|
||||
}
|
||||
|
||||
.price-table,
|
||||
.moneroversary-table {
|
||||
margin: 0 0 1.3334rem 0;
|
||||
width: 100%; // adjust to your needs
|
||||
background: #45494f;
|
||||
color: #efefef;
|
||||
border-radius: 2px;
|
||||
overflow: hidden;
|
||||
border-spacing: 0;
|
||||
background-color: var(--block-bg-color);
|
||||
|
||||
@media (min-width: $breakpoint-alpha) {
|
||||
color: #45494f;
|
||||
|
||||
tr.row3 {
|
||||
background-color: var(--blog-bg-color-secondary);
|
||||
}
|
||||
}
|
||||
|
||||
tr {
|
||||
border-top: 2px solid #fff;
|
||||
border-bottom: 2px solid #fff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
tr.row1 {
|
||||
background-color: var(--block-bg-color-heading);
|
||||
}
|
||||
|
||||
th {
|
||||
display: none;
|
||||
}
|
||||
|
||||
td {
|
||||
display: block;
|
||||
|
||||
&:first-child {
|
||||
padding-top: .5em;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
padding-bottom: .5em;
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: attr(data-th)": "; // who knew you could do this? The internet, that's who.
|
||||
font-weight: bold;
|
||||
|
||||
// optional stuff to make it look nicer
|
||||
width: 6.5em; // magic number :( adjust according to your own content
|
||||
display: inline-block;
|
||||
// end options
|
||||
|
||||
@media (min-width: $breakpoint-alpha) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
text-align: left;
|
||||
margin: .5em 1em;
|
||||
|
||||
@media (min-width: $breakpoint-alpha) {
|
||||
display: table-cell;
|
||||
padding: .25em .5em;
|
||||
padding: 1em !important;
|
||||
|
||||
&:first-child {
|
||||
padding-left: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
padding-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
th,
|
||||
td:before {
|
||||
color: var(--link-color);
|
||||
}
|
||||
|
||||
td.green {
|
||||
color: #66d166;
|
||||
|
||||
@media (min-width: $breakpoint-alpha) {
|
||||
color: #51a751;
|
||||
}
|
||||
}
|
||||
|
||||
td.red {
|
||||
color: #e36f6e;
|
||||
|
||||
@media (min-width: $breakpoint-alpha) {
|
||||
color: #d83231;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.moneroversary-table {
|
||||
margin: 1.3334rem 0 1.3334rem 0;
|
||||
|
||||
@media (max-width: $breakpoint-alpha) {
|
||||
background: #f0f0f0;
|
||||
color: #45494f;
|
||||
}
|
||||
|
||||
th,
|
||||
td:before {
|
||||
@media (max-width: $breakpoint-alpha) {
|
||||
color: #45494f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.moneroversary-table tr.row1 {
|
||||
background-color: #db8b55;
|
||||
}
|
||||
|
||||
.content h3 {
|
||||
margin-top: 3rem;
|
||||
background-color: #45494f;
|
||||
color: white;
|
||||
padding-left: 1rem;
|
||||
margin-bottom: 1rem;
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.content h3.orange {
|
||||
background-color: #db8b55;
|
||||
}
|
||||
|
||||
.content ul,
|
||||
.content ol {
|
||||
line-height: 1.9;
|
||||
}
|
||||
|
||||
.newsbyte,
|
||||
.event {
|
||||
padding: 1rem;
|
||||
background-color: var(--block-bg-color);
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
.newsbyte:first-of-type,
|
||||
.event:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.newsbyte:after {
|
||||
display: none;
|
||||
content: '';
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
margin-top: 2rem;
|
||||
background-color: #d5d5d5;
|
||||
}
|
||||
|
||||
.newsbyte h4,
|
||||
h4.stat {
|
||||
font-size: 18px;
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
font-weight: 700;
|
||||
|
||||
@media (max-width: 480px) {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 18px;
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
font-weight: 700;
|
||||
|
||||
@media (max-width: 480px) {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.newsbyte p,
|
||||
.event p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
p.date {
|
||||
margin-bottom: 0.2em;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.proposal {
|
||||
margin-bottom: 1rem;
|
||||
padding: 1em;
|
||||
background-color: var(--block-bg-color);
|
||||
}
|
||||
|
||||
.proposal p {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.proposal p:first-child {
|
||||
padding-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
.proposal p a {
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
img.merchant-img {
|
||||
width: 15rem;
|
||||
margin: 0 0 24px 0;
|
||||
}
|
||||
|
||||
img#pepperworks {
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
img#openpriv {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
img#veracrypt {
|
||||
width: 10rem;
|
||||
margin-top: 40px;
|
||||
}
|
||||
|
||||
p.address {
|
||||
background-color: var(--block-bg-color);
|
||||
color: var(--link-color);
|
||||
font-weight: bold;
|
||||
word-wrap: break-word;
|
||||
padding: 1.5rem;
|
||||
margin-top: 1.5rem;
|
||||
border-radius: 2px;
|
||||
-webkit-touch-callout: all;
|
||||
-webkit-user-select: all;
|
||||
-khtml-user-select: all;
|
||||
-moz-user-select: all;
|
||||
-ms-user-select: all;
|
||||
user-select: all;
|
||||
}
|
||||
|
||||
a.qr {
|
||||
display: inline-block;
|
||||
border: none;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
a.qr img {
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img.merchant-img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
img.fob-img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 8rem;
|
||||
background-color: rgba(0, 0, 0, 0.75);
|
||||
;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
img.wikileaks-img {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
width: 10rem;
|
||||
}
|
||||
|
||||
img#njalla {
|
||||
background-color: #01051F;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
p.text-lead {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#post-page img.img-lead,
|
||||
#post-page p.text-lead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
img.gratuitas {
|
||||
width: 10rem;
|
||||
}
|
||||
|
||||
img.localmonero {
|
||||
width: 10rem;
|
||||
margin-bottom: -1rem;
|
||||
}
|
||||
|
||||
.sponsors {
|
||||
box-sizing: border-box;
|
||||
display: -webkit-box;
|
||||
display: -ms-flexbox;
|
||||
display: flex;
|
||||
-webkit-box-flex: 0;
|
||||
-ms-flex: 0 1 auto;
|
||||
flex: 0 1 auto;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-direction: normal;
|
||||
-ms-flex-direction: row;
|
||||
flex-direction: row;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
-webkit-box-pack: center;
|
||||
-ms-flex-pack: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.sponsor {
|
||||
box-sizing: border-box;
|
||||
-webkit-box-flex: 0;
|
||||
-ms-flex: 0 0 auto;
|
||||
flex: 0 0 auto;
|
||||
flex-basis: auto;
|
||||
|
||||
@media (max-width: 520px) {
|
||||
-ms-flex-preferred-size: 100%;
|
||||
flex-basis: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
img.dvchain {
|
||||
height: 9rem;
|
||||
margin-left: 3rem;
|
||||
|
||||
@media (max-width: 520px) {
|
||||
margin-left: auto;
|
||||
margin-top: 1rem;
|
||||
height: auto;
|
||||
width: 13rem;
|
||||
}
|
||||
}
|
||||
|
||||
// Periodical
|
||||
|
||||
.revuo-classes a {
|
||||
padding: 1rem 2rem;
|
||||
width: 11rem;
|
||||
}
|
||||
|
||||
.nav-active {
|
||||
color: var(--head-nav-text-color) !important;
|
||||
}
|
||||
|
||||
// Typography for Periodical
|
||||
|
||||
.hted-head {
|
||||
margin: 2.5rem 0 1.3334rem 0;
|
||||
background: #d9dadb;
|
||||
color: #222222;
|
||||
width: 100%;
|
||||
border-radius: 2px;
|
||||
padding: 1em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#post-page h2 {
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.page-numbers-display {
|
||||
display: inline-block;
|
||||
margin-left: 1rem;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
397
assets/css/layout.scss
Normal file
397
assets/css/layout.scss
Normal file
|
@ -0,0 +1,397 @@
|
|||
/* -- General Layout -- */
|
||||
|
||||
/* Required for footer to stick to the bottom */
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* Navigation */
|
||||
|
||||
#nav,
|
||||
#nav-left {
|
||||
a {
|
||||
display: block;
|
||||
color: $background-color;
|
||||
padding: 0.33334em 0;
|
||||
font-size: 1.5em;
|
||||
font-weight: 400;
|
||||
border-bottom: none;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: lighten($main-color, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 200;
|
||||
}
|
||||
}
|
||||
|
||||
#nav {
|
||||
@include nav-position(right);
|
||||
}
|
||||
|
||||
#nav-left {
|
||||
@include nav-position(left);
|
||||
}
|
||||
|
||||
/* Toggle class to open menu */
|
||||
|
||||
#nav.menu-open {
|
||||
@include open(-14rem);
|
||||
}
|
||||
|
||||
#nav-left.menu-open-left {
|
||||
@include open(14rem);
|
||||
}
|
||||
|
||||
#nav-list {
|
||||
|
||||
.nav-actions-static {
|
||||
position: absolute;
|
||||
right: 1px;
|
||||
left: 1px;
|
||||
bottom: 1%;
|
||||
}
|
||||
|
||||
.nav-actions-static,
|
||||
.nav-actions-flex {
|
||||
gap: 12px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
/* only *-flex will be overritten if the screen is small */
|
||||
display: flex;
|
||||
|
||||
.icon {
|
||||
padding: 0;
|
||||
|
||||
>img {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Separator after menu */
|
||||
&:after {
|
||||
display: block;
|
||||
content: '';
|
||||
width: 5rem;
|
||||
height: 1px;
|
||||
margin: 23px auto;
|
||||
background-color: $background-color;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Icon menu */
|
||||
|
||||
#nav-menu {
|
||||
@include icon-position(right);
|
||||
}
|
||||
|
||||
#nav-menu-left {
|
||||
@include icon-position(left);
|
||||
}
|
||||
|
||||
#menu {
|
||||
height: 4px;
|
||||
width: 1.5em;
|
||||
background-color: lighten($text-color, 35%);
|
||||
margin-top: 8px;
|
||||
|
||||
&:after,
|
||||
&:before {
|
||||
content: "";
|
||||
display: block;
|
||||
position: relative;
|
||||
height: 4px;
|
||||
width: 1.5em;
|
||||
background-color: lighten($text-color, 35%);
|
||||
transition: all 0.3s ease-in;
|
||||
}
|
||||
|
||||
&:before {
|
||||
top: -8px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
top: 4px;
|
||||
}
|
||||
|
||||
&.btn-close {
|
||||
background: none;
|
||||
}
|
||||
|
||||
&.btn-close:before {
|
||||
top: 0;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
-moz-transform: rotate(-45deg);
|
||||
-ms-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
background-color: $background-color;
|
||||
}
|
||||
|
||||
&.btn-close:after {
|
||||
top: -4px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
background-color: $background-color;
|
||||
}
|
||||
}
|
||||
|
||||
/* Main content */
|
||||
|
||||
.fixed {
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
|
||||
#container {
|
||||
margin: 0 auto;
|
||||
max-width: 730px;
|
||||
padding: 0 1.5rem;
|
||||
}
|
||||
|
||||
#header {
|
||||
text-align: center;
|
||||
padding: 24px 0;
|
||||
position: relative;
|
||||
margin-bottom: 23px;
|
||||
|
||||
@media (max-width: 480px) {
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: $text-color;
|
||||
display: inline-block;
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
img {
|
||||
max-height: 100px;
|
||||
margin: 0 auto;
|
||||
display: block;
|
||||
|
||||
@media (max-width: 940px) {
|
||||
max-height: 90px;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
max-height: 60px;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
max-height: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: 'Bebas Neue', sans-serif; //Emerald logo font
|
||||
font-weight: 400;
|
||||
font-size: 4.5em;
|
||||
color: #d26e2b;
|
||||
|
||||
@media (max-width: 940px) {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
font-size: 3em;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
}
|
||||
|
||||
&:after {
|
||||
display: none;
|
||||
content: '';
|
||||
width: 5rem;
|
||||
height: 1px;
|
||||
margin: 23px auto;
|
||||
background-color: lighten($text-color, 70%);
|
||||
|
||||
@media (max-width: 480px) {
|
||||
margin: 0.5rem auto;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 600px) {
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Posts */
|
||||
|
||||
#posts {
|
||||
li {
|
||||
list-style-type: none;
|
||||
padding-bottom: 0.66667em;
|
||||
}
|
||||
}
|
||||
|
||||
#post-page {
|
||||
margin-bottom: 1.5em;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
margin-bottom: 1.3334em;
|
||||
}
|
||||
}
|
||||
|
||||
.post+.post:before {
|
||||
display: block;
|
||||
content: '';
|
||||
width: 5rem;
|
||||
height: 1px;
|
||||
margin: 23px auto;
|
||||
background-color: lighten($background-color, 70%) !important;
|
||||
}
|
||||
|
||||
.by-line {
|
||||
display: block;
|
||||
color: lighten($text-color, 25%);
|
||||
line-height: 1.5em;
|
||||
/* 24px/16px */
|
||||
margin-bottom: 1.5em;
|
||||
/* 24px/16px */
|
||||
padding-top: 0.5em;
|
||||
font-weight: 200;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
display: block;
|
||||
color: lighten($text-color, 25%);
|
||||
line-height: 1.3334em;
|
||||
/* 24px/18px */
|
||||
margin-bottom: 1.3334em;
|
||||
/* 24px/18px */
|
||||
font-weight: 200;
|
||||
}
|
||||
}
|
||||
|
||||
.by-line-post {
|
||||
display: block;
|
||||
color: lighten($text-color, 25%);
|
||||
line-height: 1.5em;
|
||||
/* 24px/16px */
|
||||
padding-top: 0.5em;
|
||||
font-weight: 200;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
display: block;
|
||||
color: lighten($text-color, 25%);
|
||||
line-height: 1.3334em;
|
||||
/* 24px/18px */
|
||||
margin-bottom: 1.3334em;
|
||||
/* 24px/18px */
|
||||
font-weight: 200;
|
||||
}
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 24px;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
img[title="Emerald"] {
|
||||
box-shadow: 0 2px 6px #ddd;
|
||||
}
|
||||
|
||||
code {
|
||||
color: lighten($text-color, 35%);
|
||||
background-color: lighten($background-color, 35%);
|
||||
}
|
||||
|
||||
/* Set the vertical rhythm (and padding-left) for lists inside post content */
|
||||
|
||||
.content ul,
|
||||
.content ol {
|
||||
line-height: 1.5em;
|
||||
/* 24px/16px */
|
||||
padding-left: 1.5em;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
line-height: 1.33334em;
|
||||
/* 24px/18px */
|
||||
}
|
||||
}
|
||||
|
||||
/* Paginator */
|
||||
|
||||
.pagination {
|
||||
text-align: center;
|
||||
margin: 2.666668em;
|
||||
|
||||
span {
|
||||
background-color: darken($background-color, 5%);
|
||||
color: $text-color;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
background-color: lighten($main-color, 5%);
|
||||
}
|
||||
}
|
||||
|
||||
.page-item {
|
||||
background-color: $main-color;
|
||||
color: $background-color;
|
||||
padding: 4px 8px;
|
||||
font-weight: 400;
|
||||
padding: 0.5em 1em;
|
||||
border-bottom: none;
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.page-item:hover,
|
||||
.page-item:active,
|
||||
.page-item:focus {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
|
||||
footer {
|
||||
background-color: $main-color;
|
||||
color: $background-color;
|
||||
text-align: center;
|
||||
padding: 0.6667em 0;
|
||||
}
|
||||
|
||||
#wrap {
|
||||
min-height: 100%;
|
||||
position: relative;
|
||||
padding-bottom: 140px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
padding: 25px 0;
|
||||
background-color: $main-color;
|
||||
color: $background-color;
|
||||
text-align: center;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
}
|
181
assets/css/main.scss
Normal file
181
assets/css/main.scss
Normal file
|
@ -0,0 +1,181 @@
|
|||
//Import
|
||||
@import "base", "mixin", "typography", "layout", "syntax.scss", "custom.scss";
|
||||
|
||||
// Default Style (Dark)
|
||||
:root {
|
||||
--primary-color: #888888;
|
||||
--secondary-color: #666666;
|
||||
--font-color: #cecece;
|
||||
--link-color: #e6e6e6;
|
||||
--bg-color: #0f0f0f;
|
||||
--heading-color: #454545;
|
||||
--block-bg-color: #2f3234;
|
||||
--block-bg-color-secondary: #444444;
|
||||
--block-bg-color-heading: #333333;
|
||||
--table-color: #cecece;
|
||||
--head-nav-bg-color: transparent;
|
||||
--head-nav-text-color: #d56f2a;
|
||||
--menu-color: #e1e1e1;
|
||||
--license-color: #666666;
|
||||
}
|
||||
|
||||
.nojs-toggle {
|
||||
display: none;
|
||||
}
|
||||
|
||||
// BEGIN theme switcher
|
||||
#main-theme-switcher {
|
||||
left: 25px;
|
||||
top: 35px;
|
||||
z-index: 999;
|
||||
display: block !important;
|
||||
position: absolute !important;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
|
||||
#theme-switcher:checked~* {
|
||||
--primary-color: #666666;
|
||||
--secondary-color: #555555;
|
||||
--font-color: #555555;
|
||||
--link-color: #444444;
|
||||
--bg-color: #f0f0f0;
|
||||
--heading-color: #666666;
|
||||
--block-bg-color: #d7d7d7;
|
||||
--block-bg-color-secondary: #c0c0c0;
|
||||
--block-bg-color-heading: #a5a5a5;
|
||||
--table-color: #000000;
|
||||
--head-nav-bg-color: transparent;
|
||||
--head-nav-text-color: #d56f2a;
|
||||
--menu-color: #202225;
|
||||
--license-color: #666666;
|
||||
}
|
||||
|
||||
#theme-switcher:checked~.switch .slider {
|
||||
background-color: #d56f2a;
|
||||
}
|
||||
|
||||
#theme-switcher:checked~.switch .slider::before {
|
||||
-webkit-transform: translateX(26px);
|
||||
-moz-transform: translateX(26px);
|
||||
-ms-transform: translateX(26px);
|
||||
transform: translateX(26px);
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
#main-theme-switcher {
|
||||
top: 19px;
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
// END theme switcher
|
||||
|
||||
// BEGIN menu toggle
|
||||
#menu-toggle:checked~#nav {
|
||||
-webkit-transform: translateX(-14rem);
|
||||
-moz-transform: translateX(-14rem);
|
||||
-ms-transform: translateX(-14rem);
|
||||
transform: translateX(-14rem);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#menu-toggle:checked~.menu-toggle #menu {
|
||||
background: none;
|
||||
transition: all 0.1s ease-in;
|
||||
}
|
||||
|
||||
#menu-toggle:checked~.menu-toggle #menu::before {
|
||||
top: 0;
|
||||
-webkit-transform: rotate(-45deg);
|
||||
-moz-transform: rotate(-45deg);
|
||||
-ms-transform: rotate(-45deg);
|
||||
transform: rotate(-45deg);
|
||||
background-color: #0F0F0F;
|
||||
}
|
||||
|
||||
#menu-toggle:checked~.menu-toggle #menu::after {
|
||||
top: -4px;
|
||||
-webkit-transform: rotate(45deg);
|
||||
-moz-transform: rotate(45deg);
|
||||
-ms-transform: rotate(45deg);
|
||||
transform: rotate(45deg);
|
||||
background-color: #0F0F0F;
|
||||
}
|
||||
|
||||
@media (min-width: 940px) {
|
||||
#menu-toggle:checked~#nav {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
/* Sets burger menu for small screens */
|
||||
#header {
|
||||
.action-container {
|
||||
display: flex !important;
|
||||
}
|
||||
}
|
||||
|
||||
#nav-list {
|
||||
.nav-actions-flex {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// END menu toggle
|
||||
|
||||
#wrap {
|
||||
background-color: var(--bg-color);
|
||||
color: var(--font-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: var(--secondary-color);
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--link-color);
|
||||
}
|
||||
|
||||
.moneroversary-table,
|
||||
.price-table {
|
||||
color: var(--table-color);
|
||||
}
|
||||
|
||||
time.by-line,
|
||||
p.by-line-post {
|
||||
color: var(--table-color);
|
||||
}
|
||||
|
||||
#menu,
|
||||
#menu::after,
|
||||
#menu::before {
|
||||
background-color: var(--menu-color);
|
||||
}
|
||||
|
||||
#header .action-container {
|
||||
&--left {
|
||||
left: 25px;
|
||||
top: 35px;
|
||||
}
|
||||
|
||||
&--right {
|
||||
right: 80px;
|
||||
top: 35px;
|
||||
}
|
||||
|
||||
align-items: center;
|
||||
display: none;
|
||||
flex-direction: row;
|
||||
gap: 12px;
|
||||
height: 36px;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
#header {
|
||||
|
||||
a.rss,
|
||||
a.donate {
|
||||
display: block;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
}
|
49
assets/css/mixin.scss
Normal file
49
assets/css/mixin.scss
Normal file
|
@ -0,0 +1,49 @@
|
|||
// -- Mixins -- //
|
||||
|
||||
// Nav menu
|
||||
|
||||
@mixin icon-position($position) {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 35px;
|
||||
#{$position}: 25px;
|
||||
z-index: 10;
|
||||
height: 36px;
|
||||
padding: 8px;
|
||||
// background-color: rgba(240, 240, 240, .6);
|
||||
|
||||
@media (max-width: 480px) {
|
||||
top: 15px;
|
||||
right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin open($x) {
|
||||
-webkit-transform: translateX($x);
|
||||
-moz-transform: translateX($x);
|
||||
-ms-transform: translateX($x);
|
||||
transform: translateX($x);
|
||||
width: 100%;
|
||||
|
||||
@media (min-width: 940px) {
|
||||
width: 30%;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin nav-position($position) {
|
||||
width: 14rem;
|
||||
position: fixed;
|
||||
background-color: $main-color;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
#{$position}: -14rem;
|
||||
color: $background-color;
|
||||
opacity: 0.95;
|
||||
-webkit-transition: all 0.3s ease-in;
|
||||
-moz-transition: all 0.3s ease-in;
|
||||
-ms-transition: all 0.3s ease-in;
|
||||
transition: all 0.3s ease-in;
|
||||
z-index: 1;
|
||||
padding: 72px 0;
|
||||
text-align: center;
|
||||
}
|
66
assets/css/syntax.scss
Normal file
66
assets/css/syntax.scss
Normal file
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* A Github stylesheet to highlight code snippet
|
||||
* https://github.com/mojombo/tpw/blob/master/css/syntax.css
|
||||
*/
|
||||
|
||||
// .highlight { background-color: #FFF; }
|
||||
.lineno { color: darken($background-color, 25%); margin-right: 1em; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
202
assets/css/typography.scss
Normal file
202
assets/css/typography.scss
Normal file
|
@ -0,0 +1,202 @@
|
|||
/*- Typography -*/
|
||||
//
|
||||
// Based on the typographic scale: 12, 14, 16, 18, 21, 24, 36, 48, 60, 72.
|
||||
//
|
||||
|
||||
@font-face {
|
||||
font-family: 'Bebas Neue';
|
||||
src: url('../font/BebasNeue-Regular.woff') format('woff'),
|
||||
/* Pretty Modern Browsers */
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
letter-spacing: 0.01em;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
|
||||
/*- Typography for medium and small screen, based on 16px font-size -*/
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
font-size: 18px;
|
||||
line-height: 1.7em;
|
||||
/* 24px/16px */
|
||||
margin-bottom: 1.5em;
|
||||
/* 24px/16px */
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.25em;
|
||||
/* 36px/16px */
|
||||
line-height: 1.3333em;
|
||||
/* 48px/36px */
|
||||
padding: 0.33335em 0;
|
||||
/* 12px/36px * 2 (Use padding instead of margin to maintain proximity with paragraph) */
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5em;
|
||||
/* 24px/16px */
|
||||
line-height: 1.5em;
|
||||
/* 24px/24px */
|
||||
padding: 1em 0 0 0;
|
||||
/* 12px/24px * 2, only top (Use padding instead of margin to maintain proximity with paragwithph) */
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
|
||||
@media (max-width: 480px) {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.3em;
|
||||
/* 18px/16px */
|
||||
line-height: 1.7em;
|
||||
/* 24px/18px */
|
||||
padding: 0.66667em 0;
|
||||
/* 12px/18px * 2 (Use padding instead of margin to maintain proximity with paragraph) */
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
.hted-head th {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-size: 1.125em;
|
||||
/* 18px/16px */
|
||||
line-height: 1.7em;
|
||||
/* 24px/18px */
|
||||
padding: 0.66667em 0;
|
||||
/* 12px/18px * 2 (Use padding instead of margin to maintain proximity with paragraph) */
|
||||
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
h5 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.3em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
margin: 1.5em;
|
||||
/* 24px/18px */
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
background-color: darken($background-color, 5%);
|
||||
padding: 0 1.5em;
|
||||
|
||||
/* 24px/18px */
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
padding: 1.5em 0;
|
||||
/* 24px/18px */
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 520px) {
|
||||
//Breakpoint set to 940px
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
font-size: 20px;
|
||||
line-height: 1.7em;
|
||||
/* 24px/16px */
|
||||
margin-bottom: 1.5em;
|
||||
/* 24px/16px */
|
||||
}
|
||||
|
||||
h3,
|
||||
h5 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
.hted-head th {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*- Typography for big screen, based on 18px font-size -*/
|
||||
|
||||
@media (min-width: 940px) {
|
||||
//Breakpoint set to 940px
|
||||
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
font-size: 1em;
|
||||
/* 18px */
|
||||
line-height: 1.7em;
|
||||
/* 24px/18px */
|
||||
margin-bottom: 1.3334em;
|
||||
/* 24px/18px */
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.6667em;
|
||||
/* 48px/18px */
|
||||
line-height: 1em;
|
||||
/* 48px/48px */
|
||||
padding: 0.25em 0;
|
||||
/* 12px/48px * 2 (Use padding instead of margin to maintain proximity with paragraph) */
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2em;
|
||||
/* 36px/18px */
|
||||
line-height: 1.7em;
|
||||
/* 48px/36px */
|
||||
padding: 0.66667em 0 0 0;
|
||||
/* 12px/36px * 2, pnly top (Use padding instead of margin to maintain proximity with paragraph) */
|
||||
}
|
||||
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-size: 1.7em;
|
||||
/* 24px/18px */
|
||||
line-height: 1.7em;
|
||||
/* 24px/24px */
|
||||
padding: 0.5em 0;
|
||||
/* 12px/24px * 2 (Use padding instead of margin to maintain proximity with paragraph) */
|
||||
}
|
||||
|
||||
h5 {
|
||||
padding-bottom: 0;
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
margin: 1.3334em;
|
||||
/* 24px/18px */
|
||||
-webkit-border-radius: 4px;
|
||||
-moz-border-radius: 4px;
|
||||
-ms-border-radius: 4px;
|
||||
border-radius: 4px;
|
||||
background-color: darken($background-color, 5%);
|
||||
padding: 0 1.33334em;
|
||||
|
||||
/* 24px/18px */
|
||||
p,
|
||||
ul,
|
||||
ol {
|
||||
padding: 1.33334em 0;
|
||||
/* 24px/18px */
|
||||
}
|
||||
}
|
||||
|
||||
}
|
93
assets/js/main.js
Normal file
93
assets/js/main.js
Normal file
|
@ -0,0 +1,93 @@
|
|||
// @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
|
||||
// The above is a GNU LibreJS specific license declaration. The Expat license is the same as the MIT license.
|
||||
// See: https://www.gnu.org/software/librejs/free-your-javascript.html#magnet-link-license
|
||||
const themeVariables = [
|
||||
// Light theme
|
||||
[
|
||||
{ name: 'primary-color', value: '#666666' },
|
||||
{ name: 'secondary-color', value: '#555555' },
|
||||
{ name: 'font-color', value: '#555555' },
|
||||
{ name: 'link-color', value: '#444444' },
|
||||
{ name: 'bg-color', value: '#f0f0f0' },
|
||||
{ name: 'heading-color', value: '#666666' },
|
||||
{ name: 'block-bg-color', value: '#d7d7d7' },
|
||||
{ name: 'block-bg-color-secondary', value: '#c0c0c0' },
|
||||
{ name: 'block-bg-color-heading', value: '#a5a5a5' },
|
||||
{ name: 'table-color', value: '#000000' },
|
||||
{ name: 'head-nav-bg-color', value: 'transparent' },
|
||||
{ name: 'head-nav-text-color', value: '#d56f2a' },
|
||||
{ name: 'menu-color', value: '#202225' },
|
||||
{ name: 'license-color', value: '#666666' },
|
||||
],
|
||||
|
||||
// Dark theme
|
||||
[
|
||||
{ name: 'primary-color', value: '#888888' },
|
||||
{ name: 'secondary-color', value: '#666666' },
|
||||
{ name: 'font-color', value: '#cecece' },
|
||||
{ name: 'link-color', value: '#e6e6e6' },
|
||||
{ name: 'bg-color', value: '#0f0f0f' },
|
||||
{ name: 'heading-color', value: '#454545' },
|
||||
{ name: 'block-bg-color', value: '#2f3234' },
|
||||
{ name: 'block-bg-color-secondary', value: '#444444' },
|
||||
{ name: 'block-bg-color-heading', value: '#333333' },
|
||||
{ name: 'table-color', value: '#cecece' },
|
||||
{ name: 'head-nav-bg-color', value: 'transparent' },
|
||||
{ name: 'head-nav-text-color', value: '#d56f2a' },
|
||||
{ name: 'menu-color', value: '#e1e1e1' },
|
||||
{ name: 'license-color', value: '#666666' },
|
||||
]
|
||||
]
|
||||
|
||||
const runThemeSwitcher = () => {
|
||||
// Saves themes in-between pages to LocalStorage.
|
||||
const themeSwitcher = document.getElementById('theme-switcher');
|
||||
|
||||
const setTheme = e => localStorage.setItem('theme', e.target.checked ? 'dark' : 'light');
|
||||
const checkTheme = () => themeSwitcher.checked = localStorage.getItem('theme') === 'dark';
|
||||
|
||||
// Ensures backward compatibility with IE old versions
|
||||
if (document.addEventListener) {
|
||||
themeSwitcher.addEventListener('click', setTheme);
|
||||
} else if (document.attachEvent) {
|
||||
themeSwitcher.attachEvent('onclick', setTheme);
|
||||
}
|
||||
|
||||
checkTheme()
|
||||
|
||||
// Make the theme switcher in the hamburger menu on mobile devices work.
|
||||
if (document.body.clientWidth < 940) {
|
||||
const themeSwitcherLabel = document.getElementById('main-theme-switcher');
|
||||
const navActionsContainer = document.getElementById('nav-actions-flex-container');
|
||||
|
||||
// Move the theme switcher to inside the hamburger menu.
|
||||
navActionsContainer.appendChild(themeSwitcher);
|
||||
navActionsContainer.appendChild(themeSwitcherLabel);
|
||||
|
||||
themeSwitcherLabel.style.top = '';
|
||||
themeSwitcherLabel.style.left = '42vw';
|
||||
|
||||
const checkMobileTheme = () => {
|
||||
const theme = themeVariables[themeSwitcher.checked ? 1 : 0];
|
||||
|
||||
theme.forEach(variable => {
|
||||
document.documentElement.style.setProperty(`--${variable.name}`, variable.value);
|
||||
});
|
||||
};
|
||||
|
||||
// Ensure IE compatibility
|
||||
if (document.addEventListener) {
|
||||
themeSwitcher.addEventListener('change', checkMobileTheme);
|
||||
} else if (document.attachEvent) {
|
||||
themeSwitcher.attachEvent('onchange', checkMobileTheme);
|
||||
}
|
||||
|
||||
checkMobileTheme();
|
||||
}
|
||||
};
|
||||
|
||||
if (document.addEventListener) {
|
||||
document.addEventListener('DOMContentLoaded', runThemeSwitcher);
|
||||
} else if (document.attachEvent) {
|
||||
document.attachEvent('onDOMContentLoaded', runThemeSwitcher);
|
||||
}
|
66
config.toml.example
Normal file
66
config.toml.example
Normal file
|
@ -0,0 +1,66 @@
|
|||
baseURL = 'https://revuo-xmr.com/'
|
||||
languageCode = 'en-us'
|
||||
title = 'Revuo Monero'
|
||||
description = 'Weekly and Quarterly Monero Newsletter'
|
||||
disablePathToLower = true
|
||||
canonifyURLs = true
|
||||
enableRobotsTXT = true
|
||||
theme = 'revuo-xmr'
|
||||
|
||||
[sitemap]
|
||||
changefreq = "weekly"
|
||||
priority = 0.5
|
||||
|
||||
[imaging]
|
||||
quality = 50
|
||||
|
||||
[params]
|
||||
dateFormat = "02 Jan 2006"
|
||||
|
||||
nav_links = [
|
||||
{ title = "Revuo Weekly", link = "/" },
|
||||
{ title = "Revuo Periodical", link = "/periodicals" },
|
||||
{ title = "Source Code & Licenses", link = "/source" },
|
||||
{ title = "Support Revuo", link = "/support" }
|
||||
]
|
||||
|
||||
right_icons = [
|
||||
{ title = "Support", link = "/support", external = false, icon = "donate.png", icon_alt = "Donate" },
|
||||
{ title = "ATOM Feed", link = "/atom.xml", external = true, icon = "rss_1.png", icon_alt = "ATOM Feed" },
|
||||
]
|
||||
|
||||
mirrors = [
|
||||
{ title = "Onion", link = "http://revuo75joezkbeitqmas4ab6spbrkr4vzbhjmeuv75ovrfqfp47mtjid.onion/", icon = "tor.png", icon_alt = "Tor" },
|
||||
{ title = "I2P", link = "http://qve7i3ke5h2mbbyphd7agmh5awzcwulvrvghjvhndkagdbi4mkcq.b32.i2p/", icon = "itoopie.png", icon_alt = "I2P" },
|
||||
]
|
||||
|
||||
bottom_nav_icons = [
|
||||
{ title = "Nostr", link = "https://primal.net/p/npub1tn8spk9zhxrctg2qym3gj8r7eq2wk6z3phrl8304wc54vt9qam4qvzw6jx", icon = "nostr-icon.png", icon_alt = "Nostr" },
|
||||
{ title = "x.com", link = "https://xcancel.com/revuoxmr", icon="xcom-icon.png", icon_alt = "x.com" },
|
||||
{ title = "XMPP MUC", link = "xmpp:revuo-monero@conference.jabbers.one?join", icon = "xmpp.png", icon_alt = "XMPP MUC" },
|
||||
{ title = "Matrix Room", link = "https://matrix.to/#/#revuo:monero.social", icon = "matrix.png", icon_alt = "Matrix Room" },
|
||||
]
|
||||
|
||||
[params.author]
|
||||
name = "rottenwheel"
|
||||
monero_address = "89Esx7ZAoVcD9wiDw57gxgS7m52sFEEbQiFC4qq18YZy3CdcsXvJ67FYdcDFbmYEGK7xerxgmDptd1C2xLstCbgF3RUhSMT"
|
||||
monero_qr = "img/qr.jpg"
|
||||
|
||||
[params.logo]
|
||||
icon = "revuo-monero-logo.png"
|
||||
icon_alt = "Revuo Monero Logo"
|
||||
|
||||
[params.nav_footer]
|
||||
title = "Monero Website"
|
||||
link = "https://www.getmonero.org/"
|
||||
|
||||
[params.sponsor]
|
||||
introduction = "Infrastructure sponsored by"
|
||||
link = "https://www.digilol.net"
|
||||
icon = "digilol.png"
|
||||
icon_alt = "Digilol"
|
||||
|
||||
[markup]
|
||||
[markup.goldmark]
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
BIN
font/BebasNeue-Regular.woff
Normal file
BIN
font/BebasNeue-Regular.woff
Normal file
Binary file not shown.
BIN
font/BebasNeue-Regular.woff2
Normal file
BIN
font/BebasNeue-Regular.woff2
Normal file
Binary file not shown.
26
layouts/_default/baseof.html
Normal file
26
layouts/_default/baseof.html
Normal file
|
@ -0,0 +1,26 @@
|
|||
<!DOCTYPE html>
|
||||
<html
|
||||
lang="{{ or site.Language.LanguageCode }}"
|
||||
dir="{{ or site.Language.LanguageDirection `ltr` }}"
|
||||
>
|
||||
<head>
|
||||
{{ partial "head.html" . }}
|
||||
</head>
|
||||
<body>
|
||||
{{ partial "theme-switcher.html" . }}
|
||||
|
||||
<div id="wrap">
|
||||
<div>
|
||||
{{ partial "navigation.html" . }}
|
||||
{{ partial "header.html" . }}
|
||||
<div id="container">
|
||||
<div class="content">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ partial "footer.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
23
layouts/_default/list.html
Normal file
23
layouts/_default/list.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
{{ define "main" }}
|
||||
<ul id="posts">
|
||||
{{ $paginator := .Paginate (where site.Pages "Type" "weekly") 6 }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ if not .Params.issuenumber }}
|
||||
{{ continue }}
|
||||
{{ end }}
|
||||
|
||||
<li class="post">
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
<time class="by-line">{{ .Date.Format .Site.Params.dateFormat }}</time>
|
||||
<a href="{{ .RelPermalink }}">
|
||||
<img class="img-lead" src="{{ .RelPermalink }}cover.png" alt="Revuo Monero Weekly #{{ .Params.issuenumber }} cover">
|
||||
</a>
|
||||
|
||||
{{ $sTitle := split .Params.title ":" }}
|
||||
<p>{{ site.Title }} Weekly: {{ index $sTitle 1 }}</p>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
{{ partial "pagination.html" . }}
|
||||
{{ end }}
|
6
layouts/page/single.html
Normal file
6
layouts/page/single.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
{{ define "main" }}
|
||||
<div class="content">
|
||||
<h3>{{ .Title }}</h3>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
{{ end }}
|
12
layouts/page/support.html
Normal file
12
layouts/page/support.html
Normal file
|
@ -0,0 +1,12 @@
|
|||
{{ define "main" }}
|
||||
<div class="content">
|
||||
<h3 id="support">Support {{ .Params.name }}</h3>
|
||||
<p markdown="1">{{ .Content }}</p>
|
||||
|
||||
<p markdown="1">
|
||||
If you get value out of {{ .Params.name }} and wish to see it continue,
|
||||
you can send some XMR to this address:
|
||||
</p>
|
||||
{{ partial "donate.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
7
layouts/partials/bottom_nav_icons.html
Normal file
7
layouts/partials/bottom_nav_icons.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
{{ with .Site.Params.bottom_nav_icons }}
|
||||
{{ range . }}
|
||||
<a class="icon" href="{{ .link }}" target="_blank">
|
||||
<img src="/img/{{ .icon }}" alt="{{ .icon_alt }}" title="{{ .title }}" />
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
2
layouts/partials/donate.html
Normal file
2
layouts/partials/donate.html
Normal file
|
@ -0,0 +1,2 @@
|
|||
<p class="address" markdown="1">{{ .Site.Params.author.monero_address }}</p>
|
||||
<p><a href="monero:{{ .Site.Params.author.monero_address }}">{{ $image := resources.Get .Site.Params.author.monero_qr }}<img src='{{ $image.RelPermalink }}' class="qr" style="max-width: 200px; margin-bottom: 50px" alt="Donate XMR" /></a></p>
|
58
layouts/partials/footer.html
Normal file
58
layouts/partials/footer.html
Normal file
|
@ -0,0 +1,58 @@
|
|||
<footer class="footer">
|
||||
<style>
|
||||
a.color-grey,
|
||||
.footer-links {
|
||||
color: var(--license-color);
|
||||
}
|
||||
.footer-links-section {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.footer-icons {
|
||||
display: inline;
|
||||
height: 1rem;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
.footer-sponsor,
|
||||
.footer-sponsor:hover,
|
||||
.footer-sponsor:focus {
|
||||
border-bottom: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
.footer-sponsor img {
|
||||
display: inline;
|
||||
height: 1.3rem;
|
||||
vertical-align: middle;
|
||||
margin-bottom: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
</style>
|
||||
<span
|
||||
>© {{ .Date.Format "2006" }} - {{ .Site.Title }}<br />
|
||||
<a class="color-grey" href="/source/" target="_blank"
|
||||
>Source Code & Licenses</a
|
||||
></span
|
||||
>
|
||||
<p class="footer-links-section" style="align-items: center">
|
||||
<a class="footer-links" href="{{ .Site.BaseURL }}">Clearnet</a>
|
||||
|
|
||||
{{ with .Site.Params.mirrors }}
|
||||
{{ range $index, $element := . }}
|
||||
<img class="footer-icons" src="/img/{{ .icon }}" alt="{{ .icon_alt }}" />
|
||||
<a class="footer-links" href="{{ .link }}">{{ .title }}</a>
|
||||
|
||||
{{ if ne (add $index 1) (len $.Site.Params.mirrors) }}
|
||||
|
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</p>
|
||||
|
||||
{{ with .Site.Params.sponsor }}
|
||||
{{ .introduction }}
|
||||
<a class="footer-sponsor" href="{{ .link }}" target="_blank">
|
||||
<img src="/img/{{ .icon }}" alt="{{ .icon_alt }}" />
|
||||
</a>
|
||||
{{ end }}
|
||||
</footer>
|
151
layouts/partials/head.html
Normal file
151
layouts/partials/head.html
Normal file
|
@ -0,0 +1,151 @@
|
|||
<meta charset="UTF-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1.0, maximum-scale=1"
|
||||
/>
|
||||
<title>{{ .Title }}</title>
|
||||
<meta name="description" content="{{ .Description }}" />
|
||||
<meta name="keywords" content="{{ .Keywords }}" />
|
||||
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/revuo-icon_1.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon_1.png" />
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32_1.png" />
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16_1.png" />
|
||||
|
||||
<meta name="application-name" content="{{ .Site.Title }}" />
|
||||
<meta name="msapplication-TileColor" content="#ffffff" />
|
||||
<meta name="theme-color" content="#193e4c" />
|
||||
<meta name="apple-mobile-web-app-title" content="{{ .Site.Title }}" />
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="#193e4c" />
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="{{ .Title }}" />
|
||||
<meta property="og:site_name" content="{{ .Site.Title }}" />
|
||||
<meta property="og:title" content="{{ .Title }}" />
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context" : "http://schema.org",
|
||||
"@type" : "BlogPosting",
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "{{ .Site.BaseURL }}"
|
||||
},
|
||||
"articleSection" : "{{ .Section }}",
|
||||
"name" : "{{ .Title }}",
|
||||
"headline" : "{{ .Title }}",
|
||||
// "description" : "{{ if .Description }}{{ .Description }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ end }}{{ end }}",
|
||||
"description" : "{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.description }}{{ end }}"
|
||||
"inLanguage" : "{{ .Lang }}",
|
||||
"author" : "{{ range .Site.Author }}{{ . }}{{ end }}",
|
||||
"creator" : "{{ range .Site.Author }}{{ . }}{{ end }}",
|
||||
"publisher": "{{ range .Site.Author }}{{ . }}{{ end }}",
|
||||
"accountablePerson" : "{{ range .Site.Author }}{{ . }}{{ end }}",
|
||||
"copyrightHolder" : "{{ range .Site.Author }}{{ . }}{{ end }}",
|
||||
"copyrightYear" : "{{ .Date.Format "2006" }}",
|
||||
"datePublished": "{{ .Date | safeHTML }}",
|
||||
"dateModified" : "{{ .Date | safeHTML }}",
|
||||
"url" : "{{ .Permalink }}",
|
||||
"wordCount" : "{{ .WordCount }}",
|
||||
"keywords" : [ {{ if isset .Params "tags" }}{{ range .Params.tags }}"{{ . }}",{{ end }}{{ end }}"Blog" ]
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- CSS -->
|
||||
{{- with resources.Get "css/main.scss" }}
|
||||
{{ $opts := dict "transpiler" "libsass" "targetPath" "css/style.css" }}
|
||||
{{ with . | toCSS $opts }}
|
||||
{{ if hugo.IsDevelopment }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}">
|
||||
{{ else }}
|
||||
{{ with . | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{- end }}
|
||||
|
||||
<!-- JS -->
|
||||
{{- with resources.Get "js/main.js" }}
|
||||
{{- if eq hugo.Environment "development" }}
|
||||
{{- with . | js.Build }}
|
||||
<script src="{{ .RelPermalink }}"></script>
|
||||
{{- end }}
|
||||
{{- else }}
|
||||
{{- $opts := dict "minify" true }}
|
||||
{{- with . | js.Build $opts | fingerprint }}
|
||||
<script src="{{ .RelPermalink }}" integrity="{{- .Data.Integrity }}" crossorigin="anonymous"></script>
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
<style>
|
||||
.switch {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 56px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
.switch input {
|
||||
opacity: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.slider {
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-color: #363636;
|
||||
-webkit-transition: 0.4s;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
.slider:before {
|
||||
position: absolute;
|
||||
content: "";
|
||||
height: 22px;
|
||||
width: 22px;
|
||||
left: 4px;
|
||||
bottom: 4px;
|
||||
background-color: white;
|
||||
-webkit-transition: 0.4s;
|
||||
transition: 0.4s;
|
||||
}
|
||||
|
||||
input:checked + .slider {
|
||||
background-color: #d56f2a;
|
||||
}
|
||||
|
||||
input:focus + .slider {
|
||||
box-shadow: 0 0 1px #d56f2a;
|
||||
}
|
||||
|
||||
input:checked + .slider:before {
|
||||
-webkit-transform: translateX(26px);
|
||||
-ms-transform: translateX(26px);
|
||||
transform: translateX(26px);
|
||||
}
|
||||
|
||||
/* Rounded sliders */
|
||||
.slider.round {
|
||||
border-radius: 34px;
|
||||
}
|
||||
|
||||
.slider.round:before {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-top: 34px;
|
||||
}
|
||||
|
||||
td {
|
||||
height: 50px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
</style>
|
28
layouts/partials/header.html
Normal file
28
layouts/partials/header.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<header id="header">
|
||||
<div>
|
||||
<a href="/">
|
||||
{{ with .Site.Params.logo }}
|
||||
<img src="/img/{{ .icon }}" alt="{{ .icon_alt }}" />
|
||||
{{ end }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="action-container action-container--right">
|
||||
{{ partial "right_icons.html" . }}
|
||||
</div>
|
||||
|
||||
<div class="revuo-classes">
|
||||
{{ $path := .Page.RelPermalink }}
|
||||
{{ $wk := "" }}
|
||||
{{ $pd := "" }}
|
||||
|
||||
{{ if eq $path "/periodicals/" }}
|
||||
{{ $pd = "nav-active" }}
|
||||
{{ else }}
|
||||
{{ $wk = "nav-active" }}
|
||||
{{ end }}
|
||||
|
||||
<a href="/" class="{{ $wk }}">Weekly</a>
|
||||
<a href="/periodicals/" class="{{ $pd }}">Periodical</a>
|
||||
</div>
|
||||
</header>
|
5
layouts/partials/nav_links.html
Normal file
5
layouts/partials/nav_links.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
{{ with .Site.Params.nav_links }}
|
||||
{{ range . }}
|
||||
<a href="{{ .link }}" title="{{ .title }}">{{ .title }}</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
25
layouts/partials/navigation.html
Normal file
25
layouts/partials/navigation.html
Normal file
|
@ -0,0 +1,25 @@
|
|||
<input class="nojs-toggle" id="menu-toggle" type="checkbox" name="menu-toggle">
|
||||
<label id="nav-menu" for="menu-toggle" class="menu-toggle">
|
||||
<div id="menu"></div>
|
||||
</label>
|
||||
|
||||
<nav id="nav">
|
||||
<div id="nav-list">
|
||||
<div class="nav-actions">
|
||||
<div id="nav-actions-flex-container" class="nav-actions-flex">
|
||||
{{ partial "right_icons.html" . }}
|
||||
</div>
|
||||
<div id="nav-actions-static-container" class="nav-actions-static">
|
||||
{{ partial "bottom_nav_icons.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
{{ partial "nav_links.html" . }}
|
||||
</div>
|
||||
|
||||
<!-- Nav footer -->
|
||||
{{ with .Site.Params.nav_footer }}
|
||||
<a href="{{ .link }}" title="{{ .title }}" target="_blank" hreflang="en">{{ .title }}</a>
|
||||
{{ end }}
|
||||
</nav>
|
11
layouts/partials/pagination.html
Normal file
11
layouts/partials/pagination.html
Normal file
|
@ -0,0 +1,11 @@
|
|||
<div class="pagination">
|
||||
{{ if .Paginator.HasPrev }}
|
||||
<a href="{{ .Paginator.Prev.URL }}" class="page-item prev">«</a>
|
||||
{{ end }}
|
||||
|
||||
<p class="page-numbers-display">{{ .Paginator.PageNumber }} of {{ .Paginator.TotalPages }}</p>
|
||||
|
||||
{{ if .Paginator.HasNext }}
|
||||
<a href="{{ .Paginator.Next.URL }}" class="page-item next">»</a>
|
||||
{{ end }}
|
||||
</div>
|
8
layouts/partials/right_icons.html
Normal file
8
layouts/partials/right_icons.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{{ with .Site.Params.right_icons }}
|
||||
{{ range . }}
|
||||
{{ $target := cond .external "_blank" "_self" }}
|
||||
<a class="icon" href="{{ .link }}" target="{{ $target }}">
|
||||
<img src="/img/{{ .icon }}" alt="{{ .icon_alt }}" title="{{ .title }}" />
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
7
layouts/partials/theme-switcher.html
Normal file
7
layouts/partials/theme-switcher.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<!--
|
||||
Unfortunately, targeting the parent is not a thing in CSS. This is a workaround.
|
||||
-->
|
||||
<input class="nojs-toggle" id="theme-switcher" type="checkbox" name="theme-switcher">
|
||||
<label class="switch" for="theme-switcher" id="main-theme-switcher">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
23
layouts/periodicals/list.html
Normal file
23
layouts/periodicals/list.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
{{ define "main" }}
|
||||
<ul id="posts">
|
||||
{{ $paginator := .Paginate (where site.Pages "Type" "periodical") 6 }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ if not .Params.issuenumber }}
|
||||
{{ continue }}
|
||||
{{ end }}
|
||||
|
||||
<li class="post">
|
||||
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
|
||||
<time class="by-line">{{ .Date.Format .Site.Params.dateFormat }}</time>
|
||||
<a href="{{ .RelPermalink }}">
|
||||
<img class="img-lead" src="{{ .RelPermalink }}cover.png" alt="Revuo Monero Weekly #{{ .Params.issuenumber }} cover">
|
||||
</a>
|
||||
|
||||
{{ $sTitle := split .Params.title ":" }}
|
||||
<p>Covering the period of {{ .Params.covering }}.</p>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
|
||||
{{ partial "pagination.html" . }}
|
||||
{{ end }}
|
8
layouts/periodicals/periodical.html
Normal file
8
layouts/periodicals/periodical.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{{ define "main" }}
|
||||
<article id="post-page">
|
||||
<h2>{{ .Title }}</h2>
|
||||
<time class="by-line">{{ .Date.Format .Site.Params.dateFormat }}</time>
|
||||
|
||||
{{ .Content }}
|
||||
</article>
|
||||
{{ end }}
|
8
layouts/periodicals/periodical_old.html
Normal file
8
layouts/periodicals/periodical_old.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{{ define "main" }}
|
||||
<article id="post-page">
|
||||
<h2>{{ .Title }}</h2>
|
||||
<time class="by-line">{{ .Date.Format .Site.Params.dateFormat }}</time>
|
||||
|
||||
{{ .Content }}
|
||||
</article><div style="margin-bottom: 45px"></div>
|
||||
{{ end }}
|
9
layouts/shortcodes/bc_stats.html
Normal file
9
layouts/shortcodes/bc_stats.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
<div class="bcstats">
|
||||
<p>Block height: <b>{{ .Get "height" }}</b></p>
|
||||
<p>Hash rate: <b>{{ .Get "hashrate" }}</b></p>
|
||||
<p>Average txs. per block: <b>{{ .Get "txs_per_block" }}</b></p>
|
||||
<p>Weekly Moving Average txs. per day: <b>{{ .Get "avg_txs_per_day" }}</b></p>
|
||||
<p>Block reward: <b>{{ .Get "block_reward" }} XMR</b></p>
|
||||
</div>
|
||||
|
||||
<p class="note">Data taken on {{ .Get "date" }}.</p>
|
13
layouts/shortcodes/ccs_item.html
Normal file
13
layouts/shortcodes/ccs_item.html
Normal file
|
@ -0,0 +1,13 @@
|
|||
<div class="proposal">
|
||||
<p>
|
||||
<a href='https://ccs.getmonero.org/proposals/{{ .Get "link" }}.html' target="_blank">
|
||||
{{ trim .Inner "<p></p>\n\r" }}
|
||||
</a><span>by {{ .Get "author" }}.</span>
|
||||
</p>
|
||||
|
||||
{{ $goal := .Get "goal" }}
|
||||
{{ $raised := .Get "raised" }}
|
||||
{{ with .Get "raised" }}
|
||||
<p>Raised <b>{{ $raised }}</b> of <b>{{ $goal }}</b> XMR ({{ div (.) ($goal) | mul 100 | int }}%)</p>
|
||||
{{ end }}
|
||||
</div>
|
4
layouts/shortcodes/event.html
Normal file
4
layouts/shortcodes/event.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
<div class="event">
|
||||
<p class="date" markdown="1">{{ .Get 0 }}</p>
|
||||
<p markdown="1">{{ .Inner | markdownify }}</p>
|
||||
</div>
|
1
layouts/shortcodes/newsbyte.html
Normal file
1
layouts/shortcodes/newsbyte.html
Normal file
|
@ -0,0 +1 @@
|
|||
<div class="newsbyte"><h4>{{ .Inner | markdownify }}</h4></div>
|
79
layouts/shortcodes/price_performance.html
Normal file
79
layouts/shortcodes/price_performance.html
Normal file
|
@ -0,0 +1,79 @@
|
|||
<p>XMR Market Cap: <b>${{ .Get "market_cap" }}</b>.</p>
|
||||
<p>Street Price: <b>${{ .Get "street_price" }}</b>.</p>
|
||||
|
||||
{{ $times := slice "Week" "Month" "Year" }}
|
||||
|
||||
<p class="table-title">Monero (XMR) Price</p>
|
||||
<table class="price-table">
|
||||
{{ $td := .Get "table_date" }}
|
||||
<tbody><tr class="row1">
|
||||
<th></th>
|
||||
<th>{{ $td }}</th>
|
||||
<th>Week</th>
|
||||
<th>Month</th>
|
||||
<th>Year</th>
|
||||
</tr>
|
||||
<tr>
|
||||
{{ $price := split (.Get "price_usd") "," }}
|
||||
<td data-th="XMR to">USD</td>
|
||||
<td data-th='{{ $td := .Get "table_date" }}'>${{ index $price 0 }}</td>
|
||||
|
||||
{{ $week := index $price 1 }}
|
||||
{{ $month := index $price 2 }}
|
||||
{{ $year := index $price 3 }}
|
||||
|
||||
{{ $price = slice $week $month $year }}
|
||||
|
||||
{{ range $i, $v := $price }}
|
||||
{{ $color := "green" }}
|
||||
{{ if eq (substr $v 0 1) "-" }}
|
||||
{{ $color = "red" }}
|
||||
{{ end }}
|
||||
|
||||
<td data-th="{{ index $times $i }}" class="{{ $color }}">{{ $v }}%</td>
|
||||
{{ end }}
|
||||
</tr>
|
||||
<tr class="row3">
|
||||
{{ $price := split (.Get "price_eur") "," }}
|
||||
<td data-th="XMR to">EUR</td>
|
||||
<td data-th='{{ $td := .Get "table_date" }}'>€{{ index $price 0 }}</td>
|
||||
|
||||
{{ $week := index $price 1 }}
|
||||
{{ $month := index $price 2 }}
|
||||
{{ $year := index $price 3 }}
|
||||
|
||||
{{ $price = slice $week $month $year }}
|
||||
|
||||
{{ range $i, $v := $price }}
|
||||
{{ $color := "green" }}
|
||||
{{ if eq (substr $v 0 1) "-" }}
|
||||
{{ $color = "red" }}
|
||||
{{ end }}
|
||||
|
||||
<td data-th="{{ index $times $i }}" class="{{ $color }}">{{ $v }}%</td>
|
||||
{{ end }}
|
||||
</tr>
|
||||
<tr>
|
||||
{{ $price := split (.Get "price_btc") "," }}
|
||||
<td data-th="XMR to">BTC</td>
|
||||
<td data-th='{{ $td := .Get "table_date" }}'>₿{{ index $price 0 }}</td>
|
||||
|
||||
{{ $week := index $price 1 }}
|
||||
{{ $month := index $price 2 }}
|
||||
{{ $year := index $price 3 }}
|
||||
|
||||
{{ $price = slice $week $month $year }}
|
||||
|
||||
{{ range $i, $v := $price }}
|
||||
{{ $color := "green" }}
|
||||
{{ if eq (substr $v 0 1) "-" }}
|
||||
{{ $color = "red" }}
|
||||
{{ end }}
|
||||
|
||||
<td data-th="{{ index $times $i }}" class="{{ $color }}">{{ $v }}%</td>
|
||||
{{ end }}
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p class="note">Data taken on {{ .Get "date" }}.</p>
|
7
layouts/shortcodes/support.html
Normal file
7
layouts/shortcodes/support.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
<h3>Support</h3>
|
||||
Revuo is an <a href="/support">audience-funded newsletter</a>. If you enjoy this content, please consider supporting it directly:
|
||||
{{ partial "donate.html" . }}
|
||||
|
||||
Comments, criticisms, want to share links to be included in future issues? Contact us at <b>rotten</b> at <b>revuo-xmr</b> dot <b>com</b>.
|
||||
|
||||
{{ .Inner }}
|
4
layouts/shortcodes/volunteer.html
Normal file
4
layouts/shortcodes/volunteer.html
Normal file
|
@ -0,0 +1,4 @@
|
|||
<h3>Volunteer Opportunities</h3>
|
||||
If you want to get involved in making Monero better, but aren't sure how, check out some volunteer opportunities.
|
||||
|
||||
{{ .Inner }}
|
6
layouts/shortcodes/volunteer_item.html
Normal file
6
layouts/shortcodes/volunteer_item.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
<div class="newsbyte">
|
||||
<p class="date">
|
||||
<a href='{{ .Get "link" }}' target="_blank">{{ .Get "title" }}</a></p>
|
||||
<p>{{ .Inner }}</p>
|
||||
</p>
|
||||
</div>
|
8
layouts/weekly/weekly.html
Normal file
8
layouts/weekly/weekly.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{{ define "main" }}
|
||||
<article id="post-page">
|
||||
<h2>{{ .Title }}</h2>
|
||||
<time class="by-line">{{ .Date.Format .Site.Params.dateFormat }}</time>
|
||||
|
||||
{{ .Content }}
|
||||
</article>
|
||||
{{ end }}
|
8
layouts/weekly/weekly_old.html
Normal file
8
layouts/weekly/weekly_old.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{{ define "main" }}
|
||||
<article id="post-page">
|
||||
<h2>{{ .Title }}</h2>
|
||||
<time class="by-line">{{ .Date.Format .Site.Params.dateFormat }}</time>
|
||||
|
||||
{{ .Content }}
|
||||
</article><div style="margin-bottom: 45px"></div>
|
||||
{{ end }}
|
14
theme.toml
Normal file
14
theme.toml
Normal file
|
@ -0,0 +1,14 @@
|
|||
name = 'revuo-xmr'
|
||||
license = 'AGPLv3'
|
||||
description = 'Theme for Revuo Monero newsletter'
|
||||
|
||||
[author]
|
||||
name = 'recanman'
|
||||
homepage = 'https://github.com/recanman'
|
||||
|
||||
# Originally released under the MIT license.
|
||||
# Copyright (c) 2015 Jacopo Rabolini
|
||||
[original]
|
||||
author = 'KingFelix'
|
||||
homepage = 'https://www.jacoporabolini.com/emerald/'
|
||||
repo = 'https://github.com/KingFelix/emerald/'
|
Loading…
Reference in a new issue