Skip to content

Commit ff380a1

Browse files
committed
Init book
1 parent 503bde2 commit ff380a1

File tree

13 files changed

+528
-0
lines changed

13 files changed

+528
-0
lines changed

book/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
book

book/Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
init:
2+
cargo install mdbook --version 0.4.34 --locked
3+
cargo install mdbook-admonish --version 1.12.1 --locked
4+
5+
build:
6+
mdbook build
7+
8+
serve:
9+
mdbook serve

book/README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Rust Nostr Book
2+
3+
## Init
4+
5+
On first usage you will need to run:
6+
7+
```bash
8+
make init
9+
```
10+
11+
## Build
12+
13+
```bash
14+
make build
15+
```
16+
17+
## Serve locally
18+
19+
```bash
20+
make serve
21+
```
Lines changed: 353 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,353 @@
1+
@charset "UTF-8";
2+
:root {
3+
--md-admonition-icon--note:
4+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z'/></svg>");
5+
--md-admonition-icon--abstract:
6+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M17 9H7V7h10m0 6H7v-2h10m-3 6H7v-2h7M12 3a1 1 0 0 1 1 1 1 1 0 0 1-1 1 1 1 0 0 1-1-1 1 1 0 0 1 1-1m7 0h-4.18C14.4 1.84 13.3 1 12 1c-1.3 0-2.4.84-2.82 2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2z'/></svg>");
7+
--md-admonition-icon--info:
8+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M13 9h-2V7h2m0 10h-2v-6h2m-1-9A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10A10 10 0 0 0 12 2z'/></svg>");
9+
--md-admonition-icon--tip:
10+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M17.66 11.2c-.23-.3-.51-.56-.77-.82-.67-.6-1.43-1.03-2.07-1.66C13.33 7.26 13 4.85 13.95 3c-.95.23-1.78.75-2.49 1.32-2.59 2.08-3.61 5.75-2.39 8.9.04.1.08.2.08.33 0 .22-.15.42-.35.5-.23.1-.47.04-.66-.12a.58.58 0 0 1-.14-.17c-1.13-1.43-1.31-3.48-.55-5.12C5.78 10 4.87 12.3 5 14.47c.06.5.12 1 .29 1.5.14.6.41 1.2.71 1.73 1.08 1.73 2.95 2.97 4.96 3.22 2.14.27 4.43-.12 6.07-1.6 1.83-1.66 2.47-4.32 1.53-6.6l-.13-.26c-.21-.46-.77-1.26-.77-1.26m-3.16 6.3c-.28.24-.74.5-1.1.6-1.12.4-2.24-.16-2.9-.82 1.19-.28 1.9-1.16 2.11-2.05.17-.8-.15-1.46-.28-2.23-.12-.74-.1-1.37.17-2.06.19.38.39.76.63 1.06.77 1 1.98 1.44 2.24 2.8.04.14.06.28.06.43.03.82-.33 1.72-.93 2.27z'/></svg>");
11+
--md-admonition-icon--success:
12+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m9 20.42-6.21-6.21 2.83-2.83L9 14.77l9.88-9.89 2.83 2.83L9 20.42z'/></svg>");
13+
--md-admonition-icon--question:
14+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='m15.07 11.25-.9.92C13.45 12.89 13 13.5 13 15h-2v-.5c0-1.11.45-2.11 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41a2 2 0 0 0-2-2 2 2 0 0 0-2 2H8a4 4 0 0 1 4-4 4 4 0 0 1 4 4 3.2 3.2 0 0 1-.93 2.25M13 19h-2v-2h2M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10 10 10 0 0 0 10-10c0-5.53-4.5-10-10-10z'/></svg>");
15+
--md-admonition-icon--warning:
16+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M13 14h-2V9h2m0 9h-2v-2h2M1 21h22L12 2 1 21z'/></svg>");
17+
--md-admonition-icon--failure:
18+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M20 6.91 17.09 4 12 9.09 6.91 4 4 6.91 9.09 12 4 17.09 6.91 20 12 14.91 17.09 20 20 17.09 14.91 12 20 6.91z'/></svg>");
19+
--md-admonition-icon--danger:
20+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M11 15H6l7-14v8h5l-7 14v-8z'/></svg>");
21+
--md-admonition-icon--bug:
22+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M14 12h-4v-2h4m0 6h-4v-2h4m6-6h-2.81a5.985 5.985 0 0 0-1.82-1.96L17 4.41 15.59 3l-2.17 2.17a6.002 6.002 0 0 0-2.83 0L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8z'/></svg>");
23+
--md-admonition-icon--example:
24+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M7 13v-2h14v2H7m0 6v-2h14v2H7M7 7V5h14v2H7M3 8V5H2V4h2v4H3m-1 9v-1h3v4H2v-1h2v-.5H3v-1h1V17H2m2.25-7a.75.75 0 0 1 .75.75c0 .2-.08.39-.21.52L3.12 13H5v1H2v-.92L4 11H2v-1h2.25z'/></svg>");
25+
--md-admonition-icon--quote:
26+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M14 17h3l2-4V7h-6v6h3M6 17h3l2-4V7H5v6h3l-2 4z'/></svg>");
27+
--md-details-icon:
28+
url("data:image/svg+xml;charset=utf-8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M8.59 16.58 13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.42Z'/></svg>");
29+
}
30+
31+
:is(.admonition) {
32+
display: flow-root;
33+
margin: 1.5625em 0;
34+
padding: 0 1.2rem;
35+
color: var(--fg);
36+
page-break-inside: avoid;
37+
background-color: var(--bg);
38+
border: 0 solid black;
39+
border-inline-start-width: 0.4rem;
40+
border-radius: 0.2rem;
41+
box-shadow: 0 0.2rem 1rem rgba(0, 0, 0, 0.05), 0 0 0.1rem rgba(0, 0, 0, 0.1);
42+
}
43+
@media print {
44+
:is(.admonition) {
45+
box-shadow: none;
46+
}
47+
}
48+
:is(.admonition) > * {
49+
box-sizing: border-box;
50+
}
51+
:is(.admonition) :is(.admonition) {
52+
margin-top: 1em;
53+
margin-bottom: 1em;
54+
}
55+
:is(.admonition) > .tabbed-set:only-child {
56+
margin-top: 0;
57+
}
58+
html :is(.admonition) > :last-child {
59+
margin-bottom: 1.2rem;
60+
}
61+
62+
a.admonition-anchor-link {
63+
display: none;
64+
position: absolute;
65+
left: -1.2rem;
66+
padding-right: 1rem;
67+
}
68+
a.admonition-anchor-link:link, a.admonition-anchor-link:visited {
69+
color: var(--fg);
70+
}
71+
a.admonition-anchor-link:link:hover, a.admonition-anchor-link:visited:hover {
72+
text-decoration: none;
73+
}
74+
a.admonition-anchor-link::before {
75+
content: "§";
76+
}
77+
78+
:is(.admonition-title, summary.admonition-title) {
79+
position: relative;
80+
min-height: 4rem;
81+
margin-block: 0;
82+
margin-inline: -1.6rem -1.2rem;
83+
padding-block: 0.8rem;
84+
padding-inline: 4.4rem 1.2rem;
85+
font-weight: 700;
86+
background-color: rgba(68, 138, 255, 0.1);
87+
display: flex;
88+
}
89+
:is(.admonition-title, summary.admonition-title) p {
90+
margin: 0;
91+
}
92+
html :is(.admonition-title, summary.admonition-title):last-child {
93+
margin-bottom: 0;
94+
}
95+
:is(.admonition-title, summary.admonition-title)::before {
96+
position: absolute;
97+
top: 0.625em;
98+
inset-inline-start: 1.6rem;
99+
width: 2rem;
100+
height: 2rem;
101+
background-color: #448aff;
102+
mask-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"></svg>');
103+
-webkit-mask-image: url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"></svg>');
104+
mask-repeat: no-repeat;
105+
-webkit-mask-repeat: no-repeat;
106+
mask-size: contain;
107+
-webkit-mask-size: contain;
108+
content: "";
109+
}
110+
:is(.admonition-title, summary.admonition-title):hover a.admonition-anchor-link {
111+
display: initial;
112+
}
113+
114+
details.admonition > summary.admonition-title::after {
115+
position: absolute;
116+
top: 0.625em;
117+
inset-inline-end: 1.6rem;
118+
height: 2rem;
119+
width: 2rem;
120+
background-color: currentcolor;
121+
mask-image: var(--md-details-icon);
122+
-webkit-mask-image: var(--md-details-icon);
123+
mask-repeat: no-repeat;
124+
-webkit-mask-repeat: no-repeat;
125+
mask-size: contain;
126+
-webkit-mask-size: contain;
127+
content: "";
128+
transform: rotate(0deg);
129+
transition: transform 0.25s;
130+
}
131+
details[open].admonition > summary.admonition-title::after {
132+
transform: rotate(90deg);
133+
}
134+
135+
:is(.admonition):is(.note) {
136+
border-color: #448aff;
137+
}
138+
139+
:is(.note) > :is(.admonition-title, summary.admonition-title) {
140+
background-color: rgba(68, 138, 255, 0.1);
141+
}
142+
:is(.note) > :is(.admonition-title, summary.admonition-title)::before {
143+
background-color: #448aff;
144+
mask-image: var(--md-admonition-icon--note);
145+
-webkit-mask-image: var(--md-admonition-icon--note);
146+
mask-repeat: no-repeat;
147+
-webkit-mask-repeat: no-repeat;
148+
mask-size: contain;
149+
-webkit-mask-repeat: no-repeat;
150+
}
151+
152+
:is(.admonition):is(.abstract, .summary, .tldr) {
153+
border-color: #00b0ff;
154+
}
155+
156+
:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary.admonition-title) {
157+
background-color: rgba(0, 176, 255, 0.1);
158+
}
159+
:is(.abstract, .summary, .tldr) > :is(.admonition-title, summary.admonition-title)::before {
160+
background-color: #00b0ff;
161+
mask-image: var(--md-admonition-icon--abstract);
162+
-webkit-mask-image: var(--md-admonition-icon--abstract);
163+
mask-repeat: no-repeat;
164+
-webkit-mask-repeat: no-repeat;
165+
mask-size: contain;
166+
-webkit-mask-repeat: no-repeat;
167+
}
168+
169+
:is(.admonition):is(.info, .todo) {
170+
border-color: #00b8d4;
171+
}
172+
173+
:is(.info, .todo) > :is(.admonition-title, summary.admonition-title) {
174+
background-color: rgba(0, 184, 212, 0.1);
175+
}
176+
:is(.info, .todo) > :is(.admonition-title, summary.admonition-title)::before {
177+
background-color: #00b8d4;
178+
mask-image: var(--md-admonition-icon--info);
179+
-webkit-mask-image: var(--md-admonition-icon--info);
180+
mask-repeat: no-repeat;
181+
-webkit-mask-repeat: no-repeat;
182+
mask-size: contain;
183+
-webkit-mask-repeat: no-repeat;
184+
}
185+
186+
:is(.admonition):is(.tip, .hint, .important) {
187+
border-color: #00bfa5;
188+
}
189+
190+
:is(.tip, .hint, .important) > :is(.admonition-title, summary.admonition-title) {
191+
background-color: rgba(0, 191, 165, 0.1);
192+
}
193+
:is(.tip, .hint, .important) > :is(.admonition-title, summary.admonition-title)::before {
194+
background-color: #00bfa5;
195+
mask-image: var(--md-admonition-icon--tip);
196+
-webkit-mask-image: var(--md-admonition-icon--tip);
197+
mask-repeat: no-repeat;
198+
-webkit-mask-repeat: no-repeat;
199+
mask-size: contain;
200+
-webkit-mask-repeat: no-repeat;
201+
}
202+
203+
:is(.admonition):is(.success, .check, .done) {
204+
border-color: #00c853;
205+
}
206+
207+
:is(.success, .check, .done) > :is(.admonition-title, summary.admonition-title) {
208+
background-color: rgba(0, 200, 83, 0.1);
209+
}
210+
:is(.success, .check, .done) > :is(.admonition-title, summary.admonition-title)::before {
211+
background-color: #00c853;
212+
mask-image: var(--md-admonition-icon--success);
213+
-webkit-mask-image: var(--md-admonition-icon--success);
214+
mask-repeat: no-repeat;
215+
-webkit-mask-repeat: no-repeat;
216+
mask-size: contain;
217+
-webkit-mask-repeat: no-repeat;
218+
}
219+
220+
:is(.admonition):is(.question, .help, .faq) {
221+
border-color: #64dd17;
222+
}
223+
224+
:is(.question, .help, .faq) > :is(.admonition-title, summary.admonition-title) {
225+
background-color: rgba(100, 221, 23, 0.1);
226+
}
227+
:is(.question, .help, .faq) > :is(.admonition-title, summary.admonition-title)::before {
228+
background-color: #64dd17;
229+
mask-image: var(--md-admonition-icon--question);
230+
-webkit-mask-image: var(--md-admonition-icon--question);
231+
mask-repeat: no-repeat;
232+
-webkit-mask-repeat: no-repeat;
233+
mask-size: contain;
234+
-webkit-mask-repeat: no-repeat;
235+
}
236+
237+
:is(.admonition):is(.warning, .caution, .attention) {
238+
border-color: #ff9100;
239+
}
240+
241+
:is(.warning, .caution, .attention) > :is(.admonition-title, summary.admonition-title) {
242+
background-color: rgba(255, 145, 0, 0.1);
243+
}
244+
:is(.warning, .caution, .attention) > :is(.admonition-title, summary.admonition-title)::before {
245+
background-color: #ff9100;
246+
mask-image: var(--md-admonition-icon--warning);
247+
-webkit-mask-image: var(--md-admonition-icon--warning);
248+
mask-repeat: no-repeat;
249+
-webkit-mask-repeat: no-repeat;
250+
mask-size: contain;
251+
-webkit-mask-repeat: no-repeat;
252+
}
253+
254+
:is(.admonition):is(.failure, .fail, .missing) {
255+
border-color: #ff5252;
256+
}
257+
258+
:is(.failure, .fail, .missing) > :is(.admonition-title, summary.admonition-title) {
259+
background-color: rgba(255, 82, 82, 0.1);
260+
}
261+
:is(.failure, .fail, .missing) > :is(.admonition-title, summary.admonition-title)::before {
262+
background-color: #ff5252;
263+
mask-image: var(--md-admonition-icon--failure);
264+
-webkit-mask-image: var(--md-admonition-icon--failure);
265+
mask-repeat: no-repeat;
266+
-webkit-mask-repeat: no-repeat;
267+
mask-size: contain;
268+
-webkit-mask-repeat: no-repeat;
269+
}
270+
271+
:is(.admonition):is(.danger, .error) {
272+
border-color: #ff1744;
273+
}
274+
275+
:is(.danger, .error) > :is(.admonition-title, summary.admonition-title) {
276+
background-color: rgba(255, 23, 68, 0.1);
277+
}
278+
:is(.danger, .error) > :is(.admonition-title, summary.admonition-title)::before {
279+
background-color: #ff1744;
280+
mask-image: var(--md-admonition-icon--danger);
281+
-webkit-mask-image: var(--md-admonition-icon--danger);
282+
mask-repeat: no-repeat;
283+
-webkit-mask-repeat: no-repeat;
284+
mask-size: contain;
285+
-webkit-mask-repeat: no-repeat;
286+
}
287+
288+
:is(.admonition):is(.bug) {
289+
border-color: #f50057;
290+
}
291+
292+
:is(.bug) > :is(.admonition-title, summary.admonition-title) {
293+
background-color: rgba(245, 0, 87, 0.1);
294+
}
295+
:is(.bug) > :is(.admonition-title, summary.admonition-title)::before {
296+
background-color: #f50057;
297+
mask-image: var(--md-admonition-icon--bug);
298+
-webkit-mask-image: var(--md-admonition-icon--bug);
299+
mask-repeat: no-repeat;
300+
-webkit-mask-repeat: no-repeat;
301+
mask-size: contain;
302+
-webkit-mask-repeat: no-repeat;
303+
}
304+
305+
:is(.admonition):is(.example) {
306+
border-color: #7c4dff;
307+
}
308+
309+
:is(.example) > :is(.admonition-title, summary.admonition-title) {
310+
background-color: rgba(124, 77, 255, 0.1);
311+
}
312+
:is(.example) > :is(.admonition-title, summary.admonition-title)::before {
313+
background-color: #7c4dff;
314+
mask-image: var(--md-admonition-icon--example);
315+
-webkit-mask-image: var(--md-admonition-icon--example);
316+
mask-repeat: no-repeat;
317+
-webkit-mask-repeat: no-repeat;
318+
mask-size: contain;
319+
-webkit-mask-repeat: no-repeat;
320+
}
321+
322+
:is(.admonition):is(.quote, .cite) {
323+
border-color: #9e9e9e;
324+
}
325+
326+
:is(.quote, .cite) > :is(.admonition-title, summary.admonition-title) {
327+
background-color: rgba(158, 158, 158, 0.1);
328+
}
329+
:is(.quote, .cite) > :is(.admonition-title, summary.admonition-title)::before {
330+
background-color: #9e9e9e;
331+
mask-image: var(--md-admonition-icon--quote);
332+
-webkit-mask-image: var(--md-admonition-icon--quote);
333+
mask-repeat: no-repeat;
334+
-webkit-mask-repeat: no-repeat;
335+
mask-size: contain;
336+
-webkit-mask-repeat: no-repeat;
337+
}
338+
339+
.navy :is(.admonition) {
340+
background-color: var(--sidebar-bg);
341+
}
342+
343+
.ayu :is(.admonition), .coal :is(.admonition) {
344+
background-color: var(--theme-hover);
345+
}
346+
347+
.rust :is(.admonition) {
348+
background-color: var(--sidebar-bg);
349+
color: var(--sidebar-fg);
350+
}
351+
.rust .admonition-anchor-link:link, .rust .admonition-anchor-link:visited {
352+
color: var(--sidebar-fg);
353+
}

0 commit comments

Comments
 (0)