mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-16 00:14:29 +00:00
refactor: rename modules and update migration docs
BREAKING CHANGE Module paths moved to `github.com/HugoBlox/kit` with new names: - core `blox-tailwind` → `blox` - analytics → `analytics` - netlify → `integrations/netlify` - slides (reveal) → `slides` Update go.mod, module.yaml/params, scripts, tests, and v0.11 migration guide accordingly.
This commit is contained in:
1 parent
e7e0c714d3
commit
f4280ddb1c
566 files changed
+134
-151
No files matched your search
@@ -0,0 +1,21 @@
|
||||
# Slides module (Reveal.js)
|
||||
|
||||
A Hugo Blox module for [Reveal.JS](https://revealjs.com/).
|
||||
|
||||
Empowers you to easily create, share, and present slide decks using the open, future-proof Markdown standard.
|
||||
|
||||
Supports math, syntax highlighting, diagrams, speaker notes, and much more!
|
||||
|
||||
## Install
|
||||
|
||||
1. Add the module to your `config/_default/config.yaml`:
|
||||
|
||||
```yaml
|
||||
module:
|
||||
imports:
|
||||
- path: github.com/HugoBlox/kit/modules/slides
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
[View the documentation](https://docs.hugoblox.com/content/slides/)
|
||||
@@ -0,0 +1,256 @@
|
||||
/* Background */ .bg {
|
||||
color: #f8f8f2;
|
||||
background-color: #282a36;
|
||||
}
|
||||
/* PreWrapper */ .chroma {
|
||||
color: #f8f8f2;
|
||||
background-color: #282a36;
|
||||
}
|
||||
/* Other */ .chroma .x {
|
||||
}
|
||||
/* Error */ .chroma .err {
|
||||
}
|
||||
/* CodeLine */ .chroma .cl {
|
||||
}
|
||||
/* LineTableTD */ .chroma .lntd {
|
||||
vertical-align: top;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
/* LineTable */ .chroma .lntable {
|
||||
border-spacing: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
/* LineHighlight */ .chroma .hl {
|
||||
background-color: #ffc;
|
||||
}
|
||||
/* LineNumbersTable */ .chroma .lnt {
|
||||
white-space: pre;
|
||||
user-select: none;
|
||||
margin-right: 0.4em;
|
||||
padding: 0 0.4em 0 0.4em;
|
||||
color: #7f7f7f;
|
||||
}
|
||||
/* LineNumbers */ .chroma .ln {
|
||||
white-space: pre;
|
||||
user-select: none;
|
||||
margin-right: 0.4em;
|
||||
padding: 0 0.4em 0 0.4em;
|
||||
color: #7f7f7f;
|
||||
}
|
||||
/* Line */ .chroma .line {
|
||||
display: flex;
|
||||
}
|
||||
/* Keyword */ .chroma .k {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* KeywordConstant */ .chroma .kc {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* KeywordDeclaration */ .chroma .kd {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* KeywordNamespace */ .chroma .kn {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* KeywordPseudo */ .chroma .kp {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* KeywordReserved */ .chroma .kr {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* KeywordType */ .chroma .kt {
|
||||
color: #8be9fd;
|
||||
}
|
||||
/* Name */ .chroma .n {
|
||||
}
|
||||
/* NameAttribute */ .chroma .na {
|
||||
color: #50fa7b;
|
||||
}
|
||||
/* NameBuiltin */ .chroma .nb {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* NameBuiltinPseudo */ .chroma .bp {
|
||||
}
|
||||
/* NameClass */ .chroma .nc {
|
||||
color: #50fa7b;
|
||||
}
|
||||
/* NameConstant */ .chroma .no {
|
||||
}
|
||||
/* NameDecorator */ .chroma .nd {
|
||||
}
|
||||
/* NameEntity */ .chroma .ni {
|
||||
}
|
||||
/* NameException */ .chroma .ne {
|
||||
}
|
||||
/* NameFunction */ .chroma .nf {
|
||||
color: #50fa7b;
|
||||
}
|
||||
/* NameFunctionMagic */ .chroma .fm {
|
||||
}
|
||||
/* NameLabel */ .chroma .nl {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* NameNamespace */ .chroma .nn {
|
||||
}
|
||||
/* NameOther */ .chroma .nx {
|
||||
}
|
||||
/* NameProperty */ .chroma .py {
|
||||
}
|
||||
/* NameTag */ .chroma .nt {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* NameVariable */ .chroma .nv {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* NameVariableClass */ .chroma .vc {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* NameVariableGlobal */ .chroma .vg {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* NameVariableInstance */ .chroma .vi {
|
||||
color: #8be9fd;
|
||||
font-style: italic;
|
||||
}
|
||||
/* NameVariableMagic */ .chroma .vm {
|
||||
}
|
||||
/* Literal */ .chroma .l {
|
||||
}
|
||||
/* LiteralDate */ .chroma .ld {
|
||||
}
|
||||
/* LiteralString */ .chroma .s {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringAffix */ .chroma .sa {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringBacktick */ .chroma .sb {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringChar */ .chroma .sc {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringDelimiter */ .chroma .dl {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringDoc */ .chroma .sd {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringDouble */ .chroma .s2 {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringEscape */ .chroma .se {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringHeredoc */ .chroma .sh {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringInterpol */ .chroma .si {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringOther */ .chroma .sx {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringRegex */ .chroma .sr {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringSingle */ .chroma .s1 {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralStringSymbol */ .chroma .ss {
|
||||
color: #f1fa8c;
|
||||
}
|
||||
/* LiteralNumber */ .chroma .m {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* LiteralNumberBin */ .chroma .mb {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* LiteralNumberFloat */ .chroma .mf {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* LiteralNumberHex */ .chroma .mh {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* LiteralNumberInteger */ .chroma .mi {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* LiteralNumberIntegerLong */ .chroma .il {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* LiteralNumberOct */ .chroma .mo {
|
||||
color: #bd93f9;
|
||||
}
|
||||
/* Operator */ .chroma .o {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* OperatorWord */ .chroma .ow {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* Punctuation */ .chroma .p {
|
||||
}
|
||||
/* Comment */ .chroma .c {
|
||||
color: #6272a4;
|
||||
}
|
||||
/* CommentHashbang */ .chroma .ch {
|
||||
color: #6272a4;
|
||||
}
|
||||
/* CommentMultiline */ .chroma .cm {
|
||||
color: #6272a4;
|
||||
}
|
||||
/* CommentSingle */ .chroma .c1 {
|
||||
color: #6272a4;
|
||||
}
|
||||
/* CommentSpecial */ .chroma .cs {
|
||||
color: #6272a4;
|
||||
}
|
||||
/* CommentPreproc */ .chroma .cp {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* CommentPreprocFile */ .chroma .cpf {
|
||||
color: #ff79c6;
|
||||
}
|
||||
/* Generic */ .chroma .g {
|
||||
}
|
||||
/* GenericDeleted */ .chroma .gd {
|
||||
color: #f55;
|
||||
}
|
||||
/* GenericEmph */ .chroma .ge {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* GenericError */ .chroma .gr {
|
||||
}
|
||||
/* GenericHeading */ .chroma .gh {
|
||||
font-weight: bold;
|
||||
}
|
||||
/* GenericInserted */ .chroma .gi {
|
||||
color: #50fa7b;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* GenericOutput */ .chroma .go {
|
||||
color: #44475a;
|
||||
}
|
||||
/* GenericPrompt */ .chroma .gp {
|
||||
}
|
||||
/* GenericStrong */ .chroma .gs {
|
||||
}
|
||||
/* GenericSubheading */ .chroma .gu {
|
||||
font-weight: bold;
|
||||
}
|
||||
/* GenericTraceback */ .chroma .gt {
|
||||
}
|
||||
/* GenericUnderline */ .chroma .gl {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* TextWhitespace */ .chroma .w {
|
||||
}
|
||||
@@ -0,0 +1,271 @@
|
||||
.chroma {
|
||||
background-color: #0d1117;
|
||||
color: #fff;
|
||||
}
|
||||
.chroma .nn {
|
||||
color: #fff;
|
||||
}
|
||||
.chroma .err {
|
||||
color: #f85149;
|
||||
}
|
||||
.chroma .p {
|
||||
color: #c9d1d9;
|
||||
}
|
||||
.chroma .lntd {
|
||||
border: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
vertical-align: top;
|
||||
}
|
||||
.chroma .lntable {
|
||||
width: auto;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
display: block;
|
||||
padding: 0;
|
||||
overflow: auto;
|
||||
border-spacing: 0;
|
||||
}
|
||||
.chroma .hl {
|
||||
width: 100%;
|
||||
display: block;
|
||||
background-color: rgba(110, 118, 129, 0.1);
|
||||
}
|
||||
.chroma .lnt {
|
||||
color: #8b949e;
|
||||
padding: 0 0.4em 0 0.4em;
|
||||
font-size: 0.875rem;
|
||||
margin-right: 0.4em;
|
||||
}
|
||||
.chroma .ln {
|
||||
color: #8b949e;
|
||||
padding: 0 0.4em 0 0.4em;
|
||||
margin-right: 0.4em;
|
||||
}
|
||||
.chroma .k {
|
||||
color: #ff7b72;
|
||||
}
|
||||
.chroma .kc {
|
||||
color: #ff7b72;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .kd {
|
||||
color: #ff7b72;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .kn {
|
||||
color: #ff7b72;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .kp {
|
||||
color: #ff7b72;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .kr {
|
||||
color: #ff7b72;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .kt {
|
||||
color: #ff7b72;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .na {
|
||||
color: #c9d1d9;
|
||||
}
|
||||
.chroma .nb {
|
||||
color: #c9d1d9;
|
||||
}
|
||||
.chroma .bp {
|
||||
color: #c9d1d9;
|
||||
}
|
||||
.chroma .nc {
|
||||
color: #7ee787;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .no {
|
||||
color: #79c0ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .nd {
|
||||
color: #bc8cff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .ni {
|
||||
color: #ffa657;
|
||||
}
|
||||
.chroma .ne {
|
||||
color: #ffa657;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .nf {
|
||||
color: #d2a8ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .nl {
|
||||
color: #79c0ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .nm {
|
||||
color: #ff7b72;
|
||||
}
|
||||
.chroma .nx {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .py {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .nt {
|
||||
color: #7ee787;
|
||||
}
|
||||
.chroma .nv {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .vc {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .vg {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .vi {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .l {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .ld {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .s {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sa {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sb {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sc {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .dl {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sd {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .s2 {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .se {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sh {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .si {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sx {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .sr {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .s1 {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .ss {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .m {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .mb {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .mf {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .mh {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .mi {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .il {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .mo {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .o {
|
||||
color: #a5d6ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .ow {
|
||||
color: #a5d6ff;
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .c {
|
||||
color: #8b949e;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .ch {
|
||||
color: #8b949e;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .cm {
|
||||
color: #8b949e;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .c1 {
|
||||
color: #8b949e;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .cs {
|
||||
color: #8b949e;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .cpf {
|
||||
color: #8b949e;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .gd {
|
||||
color: #ffa198;
|
||||
background-color: #490202;
|
||||
}
|
||||
.chroma .ge {
|
||||
color: #c9d1d9;
|
||||
font-style: italic;
|
||||
}
|
||||
.chroma .gr {
|
||||
color: #ffa198;
|
||||
}
|
||||
.chroma .gh {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .gi {
|
||||
color: #7ee787;
|
||||
background-color: #56d364;
|
||||
}
|
||||
.chroma .go {
|
||||
color: #8b949e;
|
||||
}
|
||||
.chroma .gp {
|
||||
color: #8b949e;
|
||||
}
|
||||
.chroma .gs {
|
||||
font-weight: bold;
|
||||
}
|
||||
.chroma .gu {
|
||||
color: #79c0ff;
|
||||
}
|
||||
.chroma .gt {
|
||||
color: #ffa198;
|
||||
}
|
||||
.chroma .gl {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.chroma .w {
|
||||
color: #484f58;
|
||||
}
|
||||
@@ -0,0 +1,286 @@
|
||||
/* Background */ .bg {
|
||||
background-color: #fff;
|
||||
}
|
||||
/* PreWrapper */ .chroma {
|
||||
background-color: #fff;
|
||||
}
|
||||
/* Other */ .chroma .x {
|
||||
}
|
||||
/* Error */ .chroma .err {
|
||||
color: #a61717;
|
||||
background-color: #e3d2d2;
|
||||
}
|
||||
/* CodeLine */ .chroma .cl {
|
||||
}
|
||||
/* LineTableTD */ .chroma .lntd {
|
||||
vertical-align: top;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
/* LineTable */ .chroma .lntable {
|
||||
border-spacing: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
/* LineHighlight */ .chroma .hl {
|
||||
background-color: #ffc;
|
||||
}
|
||||
/* LineNumbersTable */ .chroma .lnt {
|
||||
white-space: pre;
|
||||
user-select: none;
|
||||
margin-right: 0.4em;
|
||||
padding: 0 0.4em;
|
||||
color: #7f7f7f;
|
||||
}
|
||||
/* LineNumbers */ .chroma .ln {
|
||||
white-space: pre;
|
||||
user-select: none;
|
||||
margin-right: 0.4em;
|
||||
padding: 0 0.4em;
|
||||
color: #7f7f7f;
|
||||
}
|
||||
/* Line */ .chroma .line {
|
||||
display: flex;
|
||||
}
|
||||
/* Keyword */ .chroma .k {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* KeywordConstant */ .chroma .kc {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* KeywordDeclaration */ .chroma .kd {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* KeywordNamespace */ .chroma .kn {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* KeywordPseudo */ .chroma .kp {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* KeywordReserved */ .chroma .kr {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* KeywordType */ .chroma .kt {
|
||||
color: #458;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* Name */ .chroma .n {
|
||||
}
|
||||
/* NameAttribute */ .chroma .na {
|
||||
color: #008080;
|
||||
}
|
||||
/* NameBuiltin */ .chroma .nb {
|
||||
color: #0086b3;
|
||||
}
|
||||
/* NameBuiltinPseudo */ .chroma .bp {
|
||||
color: #999;
|
||||
}
|
||||
/* NameClass */ .chroma .nc {
|
||||
color: #458;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* NameConstant */ .chroma .no {
|
||||
color: #008080;
|
||||
}
|
||||
/* NameDecorator */ .chroma .nd {
|
||||
color: #3c5d5d;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* NameEntity */ .chroma .ni {
|
||||
color: #800080;
|
||||
}
|
||||
/* NameException */ .chroma .ne {
|
||||
color: #900;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* NameFunction */ .chroma .nf {
|
||||
color: #900;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* NameFunctionMagic */ .chroma .fm {
|
||||
}
|
||||
/* NameLabel */ .chroma .nl {
|
||||
color: #900;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* NameNamespace */ .chroma .nn {
|
||||
color: #555;
|
||||
}
|
||||
/* NameOther */ .chroma .nx {
|
||||
}
|
||||
/* NameProperty */ .chroma .py {
|
||||
}
|
||||
/* NameTag */ .chroma .nt {
|
||||
color: #000080;
|
||||
}
|
||||
/* NameVariable */ .chroma .nv {
|
||||
color: #008080;
|
||||
}
|
||||
/* NameVariableClass */ .chroma .vc {
|
||||
color: #008080;
|
||||
}
|
||||
/* NameVariableGlobal */ .chroma .vg {
|
||||
color: #008080;
|
||||
}
|
||||
/* NameVariableInstance */ .chroma .vi {
|
||||
color: #008080;
|
||||
}
|
||||
/* NameVariableMagic */ .chroma .vm {
|
||||
}
|
||||
/* Literal */ .chroma .l {
|
||||
}
|
||||
/* LiteralDate */ .chroma .ld {
|
||||
}
|
||||
/* LiteralString */ .chroma .s {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringAffix */ .chroma .sa {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringBacktick */ .chroma .sb {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringChar */ .chroma .sc {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringDelimiter */ .chroma .dl {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringDoc */ .chroma .sd {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringDouble */ .chroma .s2 {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringEscape */ .chroma .se {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringHeredoc */ .chroma .sh {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringInterpol */ .chroma .si {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringOther */ .chroma .sx {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringRegex */ .chroma .sr {
|
||||
color: #009926;
|
||||
}
|
||||
/* LiteralStringSingle */ .chroma .s1 {
|
||||
color: #d14;
|
||||
}
|
||||
/* LiteralStringSymbol */ .chroma .ss {
|
||||
color: #990073;
|
||||
}
|
||||
/* LiteralNumber */ .chroma .m {
|
||||
color: #099;
|
||||
}
|
||||
/* LiteralNumberBin */ .chroma .mb {
|
||||
color: #099;
|
||||
}
|
||||
/* LiteralNumberFloat */ .chroma .mf {
|
||||
color: #099;
|
||||
}
|
||||
/* LiteralNumberHex */ .chroma .mh {
|
||||
color: #099;
|
||||
}
|
||||
/* LiteralNumberInteger */ .chroma .mi {
|
||||
color: #099;
|
||||
}
|
||||
/* LiteralNumberIntegerLong */ .chroma .il {
|
||||
color: #099;
|
||||
}
|
||||
/* LiteralNumberOct */ .chroma .mo {
|
||||
color: #099;
|
||||
}
|
||||
/* Operator */ .chroma .o {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* OperatorWord */ .chroma .ow {
|
||||
color: #000;
|
||||
font-weight: bold;
|
||||
}
|
||||
/* Punctuation */ .chroma .p {
|
||||
}
|
||||
/* Comment */ .chroma .c {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
/* CommentHashbang */ .chroma .ch {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
/* CommentMultiline */ .chroma .cm {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
/* CommentSingle */ .chroma .c1 {
|
||||
color: #998;
|
||||
font-style: italic;
|
||||
}
|
||||
/* CommentSpecial */ .chroma .cs {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
/* CommentPreproc */ .chroma .cp {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
/* CommentPreprocFile */ .chroma .cpf {
|
||||
color: #999;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
/* Generic */ .chroma .g {
|
||||
}
|
||||
/* GenericDeleted */ .chroma .gd {
|
||||
color: #000;
|
||||
background-color: #fdd;
|
||||
}
|
||||
/* GenericEmph */ .chroma .ge {
|
||||
color: #000;
|
||||
font-style: italic;
|
||||
}
|
||||
/* GenericError */ .chroma .gr {
|
||||
color: #a00;
|
||||
}
|
||||
/* GenericHeading */ .chroma .gh {
|
||||
color: #999;
|
||||
}
|
||||
/* GenericInserted */ .chroma .gi {
|
||||
color: #000;
|
||||
background-color: #dfd;
|
||||
}
|
||||
/* GenericOutput */ .chroma .go {
|
||||
color: #888;
|
||||
}
|
||||
/* GenericPrompt */ .chroma .gp {
|
||||
color: #555;
|
||||
}
|
||||
/* GenericStrong */ .chroma .gs {
|
||||
font-weight: bold;
|
||||
}
|
||||
/* GenericSubheading */ .chroma .gu {
|
||||
color: #aaa;
|
||||
}
|
||||
/* GenericTraceback */ .chroma .gt {
|
||||
color: #a00;
|
||||
}
|
||||
/* GenericUnderline */ .chroma .gl {
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* TextWhitespace */ .chroma .w {
|
||||
color: #bbb;
|
||||
}
|
||||
@@ -0,0 +1,101 @@
|
||||
/*************************************************
|
||||
* Hugo Blox Builder - https://hugoblox.com/
|
||||
* License: https://github.com/HugoBlox/kit/blob/main/LICENSE.md
|
||||
*
|
||||
* Reveal.JS integration
|
||||
**************************************************/
|
||||
|
||||
/*
|
||||
global RevealMarkdown, RevealSearch, RevealNotes, RevealMath, RevealZoom, Reveal, mermaid, RevealMenu
|
||||
*/
|
||||
|
||||
import * as params from "@params";
|
||||
|
||||
// Enable core slide features.
|
||||
var enabledPlugins = [RevealMarkdown, RevealSearch, RevealNotes, RevealMath.KaTeX, RevealZoom];
|
||||
|
||||
const isObject = (o) => o === Object(o) && !isArray(o) && typeof o !== "function";
|
||||
|
||||
const isArray = (a) => Array.isArray(a);
|
||||
|
||||
const toCamelCase = (s) => s.replace(/([-_][a-z])/gi, (term) => term.toUpperCase().replace("-", "").replace("_", ""));
|
||||
|
||||
const keysToCamelCase = (o) => {
|
||||
if (isObject(o)) {
|
||||
const n = {};
|
||||
|
||||
Object.keys(o).forEach((k) => {
|
||||
n[toCamelCase(k)] = keysToCamelCase(o[k]);
|
||||
});
|
||||
|
||||
return n;
|
||||
} else if (isArray(o)) {
|
||||
return o.map((i) => keysToCamelCase(i));
|
||||
}
|
||||
|
||||
return o;
|
||||
};
|
||||
|
||||
// reveal configurations can be included in front matter under slides.reveal
|
||||
var pluginOptions = {};
|
||||
if (typeof params.slides.reveal_options !== "undefined") {
|
||||
pluginOptions = params.slides.reveal_options;
|
||||
}
|
||||
|
||||
pluginOptions = keysToCamelCase(pluginOptions);
|
||||
|
||||
//enable menu by default if not set
|
||||
if (typeof pluginOptions.menu_enabled === "undefined") {
|
||||
pluginOptions.menu_enabled = true;
|
||||
}
|
||||
|
||||
// configure menu if enabled
|
||||
if (pluginOptions.menu_enabled) {
|
||||
enabledPlugins.push(RevealMenu);
|
||||
}
|
||||
|
||||
pluginOptions.plugins = enabledPlugins;
|
||||
|
||||
Reveal.initialize(pluginOptions);
|
||||
|
||||
// Disable Mermaid by default.
|
||||
if (typeof params.slides.diagram === "undefined") {
|
||||
params.slides.diagram = false;
|
||||
}
|
||||
|
||||
// Configure Mermaid only if diagrams are enabled.
|
||||
if (params.slides.diagram) {
|
||||
//mermaid options
|
||||
// mermaid: front matter configuration can be used to set mermaid options
|
||||
// You can also use directives (see mermaid documentation)
|
||||
let mermaidOptions = {};
|
||||
if (typeof params.slides.diagram_options !== "undefined") {
|
||||
mermaidOptions = params.slides.diagram_options;
|
||||
}
|
||||
|
||||
// `startOnLoad` must be false since diagrams are lazily rendered.
|
||||
mermaidOptions.startOnLoad = false;
|
||||
|
||||
mermaid.initialize(mermaidOptions);
|
||||
|
||||
// Lazily render Mermaid diagrams within Reveal.JS slides
|
||||
// See: https://github.com/hakimel/reveal.js/issues/2863#issuecomment-1107444425
|
||||
const renderMermaidDiagrams = function renderMermaidDiagrams(event) {
|
||||
const mermaidDivs = event.currentSlide.querySelectorAll(".mermaid:not(.done)");
|
||||
const indices = Reveal.getIndices();
|
||||
const pageno = `${indices.h}-${indices.v}`;
|
||||
|
||||
mermaidDivs.forEach((mermaidDiv, i) => {
|
||||
const insertSvg = (svgCode) => {
|
||||
mermaidDiv.innerHTML = svgCode;
|
||||
mermaidDiv.classList.add("done");
|
||||
};
|
||||
const graphDefinition = mermaidDiv.textContent;
|
||||
mermaid.mermaidAPI.render(`mermaid${pageno}-${i}`, graphDefinition, insertSvg);
|
||||
});
|
||||
Reveal.layout();
|
||||
};
|
||||
|
||||
Reveal.on("ready", (event) => renderMermaidDiagrams(event));
|
||||
Reveal.on("slidechanged", (event) => renderMermaidDiagrams(event));
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
module:
|
||||
mounts:
|
||||
- source: assets
|
||||
target: assets
|
||||
- source: layouts
|
||||
target: layouts
|
||||
@@ -0,0 +1,3 @@
|
||||
module github.com/HugoBlox/kit/modules/slides
|
||||
|
||||
go 1.19
|
||||
@@ -0,0 +1,38 @@
|
||||
<div class="reveal">
|
||||
<div class="slides">
|
||||
{{/* Loop over each page. */}}
|
||||
{{ range . }}
|
||||
{{ if ne (len .Content) 0 }}
|
||||
|
||||
{{/* Must remove `<hr />` generated by Blackfriday footnotes as conflicts with slide delimiter. */}}
|
||||
{{/* Commented out workaround as Blackfriday has been superseded by Goldmark in Hugo 0.60. */}}
|
||||
{{/* TODO: reintroduce a similar workaround if Goldmark requires it. */}}
|
||||
{{/* $content := replace .Content "<div class=\"footnotes\">\n\n<hr />" "<div class=\"footnotes\">" */}}
|
||||
{{ $content := .Content }}{{/* For Goldmark. */}}
|
||||
|
||||
{{/* Let `---` delimit slides. In Goldmark, that is `<hr>`. Alternatively, for Blackfriday, use `<hr />`. */}}
|
||||
{{ range (split $content "<hr>") }}
|
||||
|
||||
{{/* Check if this slide should be hidden using inline comment */}}
|
||||
{{ $isHidden := false }}
|
||||
{{ $slideContent := . }}
|
||||
|
||||
{{ if in . "<!-- hide -->" }}
|
||||
{{ $isHidden = true }}
|
||||
{{/* Remove the hide comment from the content */}}
|
||||
{{ $slideContent = replace . "<!-- hide -->" "" }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Each `<section>` defines a new slide. */}}
|
||||
{{/* Only begin new slide `<section>` if not already added by custom `slide` shortcode. */}}
|
||||
{{ if not (in . "data-noprocess") }}
|
||||
<section{{ if $isHidden }} data-visibility="hidden"{{ end }}>
|
||||
{{ end }}
|
||||
{{ $slideContent | safeHTML }}
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,3 @@
|
||||
<span class="fragment {{ .Get "class" }}" {{ with .Get "weight" }}data-fragment-index="{{ . }}"{{ end }}>
|
||||
{{ .Inner | markdownify | emojify }}
|
||||
</span>
|
||||
@@ -0,0 +1,6 @@
|
||||
{{ $non_data_attributes := slice "id" "class" }}
|
||||
<section data-noprocess data-shortcode-slide
|
||||
{{ range $key, $value := $.Params }}
|
||||
{{ $attribute := cond (in $non_data_attributes $key) $key (delimit (slice "data" $key) "-") }}
|
||||
{{ $attribute | safeHTMLAttr }}="{{ $value }}"
|
||||
{{ end }}>
|
||||
@@ -0,0 +1,3 @@
|
||||
<aside class="notes">
|
||||
{{ .Inner | markdownify | emojify }}
|
||||
</aside>
|
||||
@@ -0,0 +1,78 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ site.LanguageCode | default "en-us" }}">
|
||||
<head>
|
||||
|
||||
{{/* Asset versions */}}
|
||||
{{ $cdn_url_reveal := "https://cdn.jsdelivr.net/npm/reveal.js@5.0.4" }}
|
||||
{{ $mermaid_version := "9.1.3" }}
|
||||
{{ $mermaid_sri := "sha256-TIYL00Rhw/8WaoUhYTLX9SKIEFdXxg+yMWSLVUbhiLg=" }}
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="generator" content="Hugo Blox Builder {{with site.Data.hugoblox.version}}{{.}}{{end}}">
|
||||
|
||||
{{ with site.Home.OutputFormats.Get "WebAppManifest" }}
|
||||
<link rel="manifest" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ "media/icon.png" | relURL }}">
|
||||
<link rel="apple-touch-icon" type="image/png" href="{{ "media/icon.png" | relURL }}">
|
||||
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
<title>{{ .Title }} | {{ site.Title }}</title>
|
||||
|
||||
{{/* Load Reveal CSS */}}
|
||||
<link rel="stylesheet" href="{{ $cdn_url_reveal }}/dist/reveal.min.css">
|
||||
{{- $theme := $.Param "slides.theme" | default "black" -}}
|
||||
<link rel="stylesheet" href="{{ $cdn_url_reveal }}/dist/theme/{{ $theme }}.min.css">
|
||||
|
||||
{{/* Hugo Chroma Syntax Highlighter Initialization */}}
|
||||
{{ $hl_theme := $.Param "slides.highlight_style" | default "dracula" }}
|
||||
{{ $hl_theme_path := printf "css/libs/chroma/%s.css" $hl_theme }}
|
||||
{{ if not (fileExists (printf "assets/%s" $hl_theme_path)) }}
|
||||
{{ errorf "Hugo Chroma themes %s.css not found in `css/libs/chroma/`. See https://gohugo.io/commands/hugo_gen_chromastyles/" $hl_theme }}
|
||||
{{ else }}
|
||||
{{ $hl_theme_css := resources.Get $hl_theme_path | minify }}
|
||||
<link rel="stylesheet" href="{{ $hl_theme_css.RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{/* Load any Reveal CSS customizations */}}
|
||||
{{ $custom_reveal_css := printf "css/reveal_custom.css" }}
|
||||
{{ if (fileExists (printf "assets/%s" $custom_reveal_css)) }}
|
||||
{{ $css_custom := resources.Get "css/reveal_custom.css" }}
|
||||
{{ $style := slice $css_custom | resources.Concat "css/reveal_custom.css" | resources.Minify }}
|
||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
|
||||
{{ end }}
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{ block "main" . }}{{ end }}
|
||||
|
||||
{{/* Load Reveal and built-in plugins. */}}
|
||||
<script src="{{ $cdn_url_reveal }}/dist/reveal.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/markdown/markdown.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/notes/notes.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/search/search.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/math/math.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/zoom/zoom.min.js" crossorigin="anonymous"></script>
|
||||
|
||||
{{/* Load third-party Reveal plugins. */}}
|
||||
{{ if $.Param "slides.reveal_options.menu_enabled" | default true}}
|
||||
<script src="https://cdn.jsdelivr.net/npm/reveal.js-menu@2.1.0/plugin.js" integrity="sha256-M6JwAjnRAWmi+sbXURR/yAhWZKYhAw7YXnnLvIxrdGs=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/reveal.js-menu@2.1.0/menu.js" integrity="sha256-l14dklFcW5mWar6w/9KaW0fWVerf3mYr7Wt0+rXzFAA=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-menu@2.1.0/menu.css" integrity="sha256-0fU8HKLaTjgzfaV9CgSqbsN8ilA3zo6zK1M6rlgULd8=" crossorigin="anonymous">
|
||||
{{ end }}
|
||||
|
||||
{{/* Load Mermaid. */}}
|
||||
{{ if $.Param "slides.diagram" | default false}}
|
||||
{{ printf "<script src=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\" title=\"mermaid\"></script>" (printf "https://cdn.jsdelivr.net/npm/mermaid@%s/dist/mermaid.min.js" $mermaid_version) $mermaid_sri | safeHTML }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Initialize slides. */}}
|
||||
{{ $slidejs := resources.Get "js/hugoblox-slides.js" | js.Build (dict "params" (dict "slides" $.Params.slides )) }}
|
||||
<script src="{{ $slidejs.RelPermalink }}"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Whitespace-only changes.
@@ -0,0 +1,3 @@
|
||||
{{ define "main" }}
|
||||
{{ partial "slides" (union (slice .Page) .Pages) }}
|
||||
{{ end }}
|
||||
Reference in new issue
Block a user