jekyll-theme-zer0 0.10.6 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +400 -0
- data/README.md +24 -8
- data/_data/navigation/about.yml +39 -11
- data/_data/navigation/docs.yml +53 -23
- data/_data/navigation/home.yml +27 -9
- data/_data/navigation/main.yml +27 -8
- data/_data/navigation/posts.yml +22 -6
- data/_data/navigation/quickstart.yml +8 -3
- data/_includes/README.md +2 -0
- data/_includes/components/js-cdn.html +4 -1
- data/_includes/components/post-card.html +2 -11
- data/_includes/components/preview-image.html +32 -0
- data/_includes/content/intro.html +5 -6
- data/_includes/core/header.html +14 -0
- data/_includes/navigation/sidebar-categories.html +20 -9
- data/_includes/navigation/sidebar-folders.html +8 -7
- data/_includes/navigation/sidebar-right.html +16 -10
- data/_layouts/blog.html +15 -45
- data/_layouts/category.html +4 -24
- data/_layouts/collection.html +2 -12
- data/_layouts/default.html +1 -1
- data/_layouts/journals.html +2 -12
- data/_layouts/notebook.html +296 -0
- data/_sass/core/_docs.scss +1 -1
- data/_sass/custom.scss +54 -17
- data/_sass/notebooks.scss +458 -0
- data/assets/images/notebooks/test-notebook_files/test-notebook_4_0.png +0 -0
- data/assets/js/sidebar.js +511 -0
- data/scripts/README.md +128 -105
- data/scripts/analyze-commits.sh +9 -311
- data/scripts/bin/build +22 -22
- data/scripts/build +7 -111
- data/scripts/convert-notebooks.sh +415 -0
- data/scripts/features/validate_preview_urls.py +500 -0
- data/scripts/fix-markdown-format.sh +8 -262
- data/scripts/generate-preview-images.sh +7 -787
- data/scripts/install-preview-generator.sh +8 -528
- data/scripts/lib/README.md +5 -5
- data/scripts/lib/gem.sh +19 -7
- data/scripts/release +7 -236
- data/scripts/setup.sh +9 -153
- data/scripts/test-auto-version.sh +7 -256
- data/scripts/test-mermaid.sh +7 -287
- data/scripts/test.sh +9 -154
- metadata +9 -10
- data/scripts/features/preview_generator.py +0 -646
- data/scripts/lib/test/run_tests.sh +0 -140
- data/scripts/lib/test/test_changelog.sh +0 -87
- data/scripts/lib/test/test_gem.sh +0 -68
- data/scripts/lib/test/test_git.sh +0 -82
- data/scripts/lib/test/test_validation.sh +0 -72
- data/scripts/lib/test/test_version.sh +0 -96
- data/scripts/version.sh +0 -178
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
// ==============================================================================
|
|
2
|
+
// NOTEBOOK STYLES - Jupyter Notebook Display Styling
|
|
3
|
+
// ==============================================================================
|
|
4
|
+
//
|
|
5
|
+
// File: _notebooks.scss
|
|
6
|
+
// Path: _sass/notebooks.scss
|
|
7
|
+
// Purpose: Styles for Jupyter notebook cells, outputs, and code blocks
|
|
8
|
+
//
|
|
9
|
+
// Features:
|
|
10
|
+
// - Code cell styling with execution counts
|
|
11
|
+
// - Output area styling (text, images, tables)
|
|
12
|
+
// - Responsive design for mobile and desktop
|
|
13
|
+
// - Syntax highlighting integration with Rouge
|
|
14
|
+
// - MathJax equation display
|
|
15
|
+
// - Bootstrap 5 compatible
|
|
16
|
+
//
|
|
17
|
+
// Dependencies:
|
|
18
|
+
// - Bootstrap 5 variables and utilities
|
|
19
|
+
// - Rouge syntax highlighter
|
|
20
|
+
// - MathJax for mathematical notation
|
|
21
|
+
// ==============================================================================
|
|
22
|
+
|
|
23
|
+
// Notebook article container
|
|
24
|
+
.notebook-article {
|
|
25
|
+
// Ensure proper spacing and readability
|
|
26
|
+
line-height: 1.6;
|
|
27
|
+
|
|
28
|
+
.notebook-header {
|
|
29
|
+
border-bottom: 2px solid var(--bs-border-color);
|
|
30
|
+
padding-bottom: 1.5rem;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.notebook-title {
|
|
34
|
+
color: var(--bs-heading-color);
|
|
35
|
+
font-weight: 700;
|
|
36
|
+
margin-bottom: 1rem;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.notebook-meta {
|
|
40
|
+
font-size: 0.9rem;
|
|
41
|
+
|
|
42
|
+
.bi {
|
|
43
|
+
font-size: 1rem;
|
|
44
|
+
vertical-align: text-bottom;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.notebook-description {
|
|
49
|
+
color: var(--bs-secondary-color);
|
|
50
|
+
font-size: 1.1rem;
|
|
51
|
+
border-left: 4px solid var(--bs-primary);
|
|
52
|
+
padding-left: 1rem;
|
|
53
|
+
margin: 1.5rem 0;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Notebook content area
|
|
58
|
+
.notebook-content {
|
|
59
|
+
margin-top: 2rem;
|
|
60
|
+
|
|
61
|
+
// Headings within notebook
|
|
62
|
+
h1, h2, h3, h4, h5, h6 {
|
|
63
|
+
margin-top: 2rem;
|
|
64
|
+
margin-bottom: 1rem;
|
|
65
|
+
font-weight: 600;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
h1 { font-size: 2rem; }
|
|
69
|
+
h2 { font-size: 1.75rem; }
|
|
70
|
+
h3 { font-size: 1.5rem; }
|
|
71
|
+
h4 { font-size: 1.25rem; }
|
|
72
|
+
h5 { font-size: 1.1rem; }
|
|
73
|
+
h6 { font-size: 1rem; }
|
|
74
|
+
|
|
75
|
+
// Paragraphs
|
|
76
|
+
p {
|
|
77
|
+
margin-bottom: 1rem;
|
|
78
|
+
line-height: 1.7;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Lists
|
|
82
|
+
ul, ol {
|
|
83
|
+
margin-bottom: 1rem;
|
|
84
|
+
padding-left: 2rem;
|
|
85
|
+
|
|
86
|
+
li {
|
|
87
|
+
margin-bottom: 0.5rem;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Blockquotes
|
|
92
|
+
blockquote {
|
|
93
|
+
border-left: 4px solid var(--bs-secondary);
|
|
94
|
+
padding-left: 1rem;
|
|
95
|
+
margin: 1.5rem 0;
|
|
96
|
+
font-style: italic;
|
|
97
|
+
color: var(--bs-secondary-color);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Links
|
|
101
|
+
a {
|
|
102
|
+
color: var(--bs-link-color);
|
|
103
|
+
text-decoration: underline;
|
|
104
|
+
|
|
105
|
+
&:hover {
|
|
106
|
+
color: var(--bs-link-hover-color);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Images
|
|
111
|
+
img {
|
|
112
|
+
max-width: 100%;
|
|
113
|
+
height: auto;
|
|
114
|
+
margin: 1rem 0;
|
|
115
|
+
border-radius: 0.375rem;
|
|
116
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Tables
|
|
120
|
+
table {
|
|
121
|
+
width: 100%;
|
|
122
|
+
margin: 1.5rem 0;
|
|
123
|
+
border-collapse: collapse;
|
|
124
|
+
font-size: 0.9rem;
|
|
125
|
+
|
|
126
|
+
thead {
|
|
127
|
+
background-color: var(--bs-secondary-bg);
|
|
128
|
+
border-bottom: 2px solid var(--bs-border-color);
|
|
129
|
+
|
|
130
|
+
th {
|
|
131
|
+
padding: 0.75rem;
|
|
132
|
+
text-align: left;
|
|
133
|
+
font-weight: 600;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
tbody {
|
|
138
|
+
tr {
|
|
139
|
+
border-bottom: 1px solid var(--bs-border-color);
|
|
140
|
+
|
|
141
|
+
&:hover {
|
|
142
|
+
background-color: var(--bs-tertiary-bg);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
td {
|
|
147
|
+
padding: 0.75rem;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Horizontal rules
|
|
153
|
+
hr {
|
|
154
|
+
margin: 2rem 0;
|
|
155
|
+
opacity: 0.3;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Code cells and code blocks
|
|
160
|
+
.notebook-content {
|
|
161
|
+
// Inline code
|
|
162
|
+
code {
|
|
163
|
+
background-color: var(--bs-secondary-bg);
|
|
164
|
+
color: var(--bs-code-color);
|
|
165
|
+
padding: 0.2rem 0.4rem;
|
|
166
|
+
border-radius: 0.25rem;
|
|
167
|
+
font-size: 0.875em;
|
|
168
|
+
font-family: 'Monaco', 'Menlo', 'Consolas', monospace;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Code blocks
|
|
172
|
+
pre {
|
|
173
|
+
background-color: var(--bs-secondary-bg);
|
|
174
|
+
border: 1px solid var(--bs-border-color);
|
|
175
|
+
border-radius: 0.375rem;
|
|
176
|
+
padding: 1rem;
|
|
177
|
+
overflow-x: auto;
|
|
178
|
+
margin: 1.5rem 0;
|
|
179
|
+
|
|
180
|
+
code {
|
|
181
|
+
background-color: transparent;
|
|
182
|
+
color: inherit;
|
|
183
|
+
padding: 0;
|
|
184
|
+
border-radius: 0;
|
|
185
|
+
font-size: 0.875rem;
|
|
186
|
+
line-height: 1.5;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Jupyter code cells with execution counts
|
|
191
|
+
.highlight {
|
|
192
|
+
position: relative;
|
|
193
|
+
background-color: var(--bs-secondary-bg);
|
|
194
|
+
border-radius: 0.375rem;
|
|
195
|
+
margin: 1.5rem 0;
|
|
196
|
+
|
|
197
|
+
pre {
|
|
198
|
+
margin: 0;
|
|
199
|
+
border: none;
|
|
200
|
+
background-color: transparent;
|
|
201
|
+
border-radius: 0;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Input prompts (In [1]:)
|
|
206
|
+
.input-prompt {
|
|
207
|
+
color: var(--bs-primary);
|
|
208
|
+
font-weight: 600;
|
|
209
|
+
user-select: none;
|
|
210
|
+
padding-right: 0.5rem;
|
|
211
|
+
|
|
212
|
+
&::before {
|
|
213
|
+
content: 'In [';
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
&::after {
|
|
217
|
+
content: ']:';
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Output prompts (Out [1]:)
|
|
222
|
+
.output-prompt {
|
|
223
|
+
color: var(--bs-danger);
|
|
224
|
+
font-weight: 600;
|
|
225
|
+
user-select: none;
|
|
226
|
+
padding-right: 0.5rem;
|
|
227
|
+
|
|
228
|
+
&::before {
|
|
229
|
+
content: 'Out[';
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
&::after {
|
|
233
|
+
content: ']:';
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Jupyter output areas
|
|
239
|
+
.jp-OutputArea,
|
|
240
|
+
.output-area,
|
|
241
|
+
.cell-output {
|
|
242
|
+
margin: 1rem 0;
|
|
243
|
+
padding: 1rem;
|
|
244
|
+
background-color: var(--bs-light-bg-subtle);
|
|
245
|
+
border-left: 4px solid var(--bs-success);
|
|
246
|
+
border-radius: 0.375rem;
|
|
247
|
+
|
|
248
|
+
// Text output
|
|
249
|
+
pre {
|
|
250
|
+
background-color: transparent;
|
|
251
|
+
border: none;
|
|
252
|
+
padding: 0;
|
|
253
|
+
margin: 0;
|
|
254
|
+
color: var(--bs-body-color);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Image output
|
|
258
|
+
img {
|
|
259
|
+
display: block;
|
|
260
|
+
max-width: 100%;
|
|
261
|
+
height: auto;
|
|
262
|
+
margin: 0 auto;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Table output (pandas DataFrames)
|
|
266
|
+
table {
|
|
267
|
+
margin: 0;
|
|
268
|
+
font-size: 0.85rem;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Error output
|
|
272
|
+
&.error {
|
|
273
|
+
border-left-color: var(--bs-danger);
|
|
274
|
+
background-color: var(--bs-danger-bg-subtle);
|
|
275
|
+
color: var(--bs-danger-text);
|
|
276
|
+
|
|
277
|
+
pre {
|
|
278
|
+
color: var(--bs-danger-text);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Jupyter cell containers
|
|
284
|
+
.jp-Cell,
|
|
285
|
+
.cell {
|
|
286
|
+
margin: 2rem 0;
|
|
287
|
+
|
|
288
|
+
// Code cells
|
|
289
|
+
&.jp-CodeCell,
|
|
290
|
+
&.code-cell {
|
|
291
|
+
.jp-InputArea,
|
|
292
|
+
.input-area {
|
|
293
|
+
position: relative;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// Markdown cells
|
|
298
|
+
&.jp-MarkdownCell,
|
|
299
|
+
&.markdown-cell {
|
|
300
|
+
// Inherits from .notebook-content styles
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// MathJax equations
|
|
305
|
+
.MathJax,
|
|
306
|
+
.MathJax_Display {
|
|
307
|
+
font-size: 1.1em !important;
|
|
308
|
+
|
|
309
|
+
// Inline math
|
|
310
|
+
&.MathJax_Inline {
|
|
311
|
+
margin: 0 0.2em;
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
// Display math (centered)
|
|
315
|
+
&.MathJax_Display {
|
|
316
|
+
margin: 1.5rem 0;
|
|
317
|
+
text-align: center;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// LaTeX equations (before MathJax processes them)
|
|
322
|
+
.tex,
|
|
323
|
+
.latex {
|
|
324
|
+
font-family: 'Computer Modern', serif;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
// Notebook footer
|
|
328
|
+
.notebook-footer {
|
|
329
|
+
margin-top: 3rem;
|
|
330
|
+
padding-top: 2rem;
|
|
331
|
+
|
|
332
|
+
.share-buttons {
|
|
333
|
+
.btn {
|
|
334
|
+
display: inline-flex;
|
|
335
|
+
align-items: center;
|
|
336
|
+
gap: 0.5rem;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
.download-notebook {
|
|
341
|
+
.btn {
|
|
342
|
+
display: inline-flex;
|
|
343
|
+
align-items: center;
|
|
344
|
+
gap: 0.5rem;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
.related-notebooks {
|
|
349
|
+
.card {
|
|
350
|
+
transition: transform 0.2s, box-shadow 0.2s;
|
|
351
|
+
|
|
352
|
+
&:hover {
|
|
353
|
+
transform: translateY(-4px);
|
|
354
|
+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
// Notebook navigation
|
|
361
|
+
.notebook-navigation {
|
|
362
|
+
margin-top: 3rem;
|
|
363
|
+
|
|
364
|
+
.pagination {
|
|
365
|
+
.page-link {
|
|
366
|
+
display: flex;
|
|
367
|
+
align-items: center;
|
|
368
|
+
padding: 0.75rem 1rem;
|
|
369
|
+
|
|
370
|
+
&.disabled {
|
|
371
|
+
opacity: 0.5;
|
|
372
|
+
cursor: not-allowed;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// Responsive adjustments
|
|
379
|
+
@media (max-width: 768px) {
|
|
380
|
+
.notebook-content {
|
|
381
|
+
// Smaller font sizes on mobile
|
|
382
|
+
font-size: 0.95rem;
|
|
383
|
+
|
|
384
|
+
h1 { font-size: 1.75rem; }
|
|
385
|
+
h2 { font-size: 1.5rem; }
|
|
386
|
+
h3 { font-size: 1.25rem; }
|
|
387
|
+
h4 { font-size: 1.1rem; }
|
|
388
|
+
|
|
389
|
+
// Scrollable code blocks
|
|
390
|
+
pre {
|
|
391
|
+
font-size: 0.8rem;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// Scrollable tables
|
|
395
|
+
table {
|
|
396
|
+
display: block;
|
|
397
|
+
overflow-x: auto;
|
|
398
|
+
white-space: nowrap;
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
.notebook-footer {
|
|
403
|
+
.related-notebooks {
|
|
404
|
+
.col-md-4 {
|
|
405
|
+
margin-bottom: 1rem;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.notebook-navigation {
|
|
411
|
+
.pagination {
|
|
412
|
+
flex-direction: column;
|
|
413
|
+
gap: 0.5rem;
|
|
414
|
+
|
|
415
|
+
.page-item {
|
|
416
|
+
width: 100%;
|
|
417
|
+
|
|
418
|
+
.page-link {
|
|
419
|
+
width: 100%;
|
|
420
|
+
text-align: center;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
// Print styles
|
|
428
|
+
@media print {
|
|
429
|
+
.notebook-article {
|
|
430
|
+
.notebook-footer,
|
|
431
|
+
.share-buttons,
|
|
432
|
+
.notebook-comments,
|
|
433
|
+
.notebook-navigation {
|
|
434
|
+
display: none;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
// Dark mode support (if theme implements dark mode)
|
|
440
|
+
@media (prefers-color-scheme: dark) {
|
|
441
|
+
.notebook-content {
|
|
442
|
+
.highlight,
|
|
443
|
+
pre {
|
|
444
|
+
background-color: var(--bs-dark-bg-subtle);
|
|
445
|
+
border-color: var(--bs-border-color-translucent);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.jp-OutputArea,
|
|
450
|
+
.output-area,
|
|
451
|
+
.cell-output {
|
|
452
|
+
background-color: var(--bs-dark-bg-subtle);
|
|
453
|
+
|
|
454
|
+
&.error {
|
|
455
|
+
background-color: rgba(220, 53, 69, 0.1);
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
}
|
|
Binary file
|