jekyll-theme-zer0 1.19.1 → 1.20.2

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.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +395 -0
  3. data/README.md +27 -19
  4. data/_data/authors.yml +154 -5
  5. data/_data/backlog.yml +5 -5
  6. data/_data/content_statistics.yml +273 -297
  7. data/_data/features.yml +4 -25
  8. data/_data/navigation/README.md +24 -0
  9. data/_data/navigation/about.yml +2 -0
  10. data/_data/navigation/main.yml +2 -7
  11. data/_data/roadmap.yml +86 -12
  12. data/_includes/components/author-avatar-url.html +28 -0
  13. data/_includes/components/author-bio.html +86 -0
  14. data/_includes/components/author-card.html +184 -121
  15. data/_includes/components/author-eeat.html +10 -4
  16. data/_includes/components/info-section.html +1 -1
  17. data/_includes/components/mermaid.html +0 -3
  18. data/_includes/components/post-card.html +19 -9
  19. data/_includes/content/giscus.html +3 -2
  20. data/_includes/core/footer-fabs.html +28 -0
  21. data/_includes/core/footer.html +7 -17
  22. data/_includes/core/head.html +2 -2
  23. data/_includes/navigation/breadcrumbs.html +20 -2
  24. data/_includes/navigation/local-graph.html +18 -2
  25. data/_includes/obsidian/full-graph.html +4 -6
  26. data/_layouts/article.html +44 -74
  27. data/_layouts/author.html +274 -0
  28. data/_layouts/authors.html +55 -0
  29. data/_layouts/news.html +3 -3
  30. data/_layouts/note.html +21 -6
  31. data/_layouts/notebook.html +21 -6
  32. data/_layouts/root.html +31 -17
  33. data/_layouts/section.html +3 -3
  34. data/_plugins/author_pages_generator.rb +121 -0
  35. data/_sass/components/_author.scss +219 -0
  36. data/_sass/components/_content-tables.scss +16 -1
  37. data/_sass/components/_notes-index.scss +102 -0
  38. data/_sass/components/_search-modal.scss +40 -0
  39. data/_sass/components/_ui-enhancements.scss +570 -0
  40. data/_sass/core/_docs-code-examples.scss +463 -0
  41. data/_sass/core/_docs-layout.scss +0 -453
  42. data/_sass/core/_navbar.scss +253 -0
  43. data/_sass/core/_sidebar-extras.scss +79 -0
  44. data/_sass/core/_toc.scss +87 -0
  45. data/_sass/core/_variables.scss +7 -142
  46. data/_sass/custom.scss +24 -1122
  47. data/_sass/layouts/_global-chrome.scss +59 -0
  48. data/assets/css/main.scss +19 -2
  49. data/assets/js/author-profile.js +190 -0
  50. data/assets/js/modules/navigation/navbar.js +104 -0
  51. data/assets/js/obsidian-graph.js +2 -2
  52. data/assets/js/obsidian-local-graph.js +11 -5
  53. data/assets/vendor/cytoscape/cytoscape.min.js +32 -0
  54. data/scripts/README.md +39 -0
  55. data/scripts/bin/validate +11 -1
  56. data/scripts/dev/css-diff.sh +49 -0
  57. data/scripts/dev/shot.js +37 -0
  58. data/scripts/features/generate-preview-images +110 -6
  59. data/scripts/features/pixelate-preview-images +126 -0
  60. data/scripts/features/pixelate_images.py +662 -0
  61. data/scripts/github-setup.sh +0 -0
  62. data/scripts/lib/preview_generator.py +47 -3
  63. data/scripts/pixelate-preview-images.sh +12 -0
  64. data/scripts/test/integration/auto-version +10 -8
  65. data/scripts/test/lib/run_tests.sh +2 -0
  66. data/scripts/test/lib/test_content_review.sh +205 -0
  67. data/scripts/test/lib/test_pixelate_images.sh +108 -0
  68. metadata +25 -20
  69. data/_data/hub.yml +0 -68
  70. data/_data/hub_index.yml +0 -203
  71. data/_data/navigation/hub.yml +0 -110
  72. data/assets/vendor/font-awesome/css/all.min.css +0 -9
  73. data/assets/vendor/font-awesome/webfonts/fa-brands-400.ttf +0 -0
  74. data/assets/vendor/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
  75. data/assets/vendor/font-awesome/webfonts/fa-regular-400.ttf +0 -0
  76. data/assets/vendor/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
  77. data/assets/vendor/font-awesome/webfonts/fa-solid-900.ttf +0 -0
  78. data/assets/vendor/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
  79. data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.ttf +0 -0
  80. data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.woff2 +0 -0
  81. data/assets/vendor/jquery/jquery-3.7.1.min.js +0 -2
  82. data/scripts/lib/hub.rb +0 -208
  83. data/scripts/provision-org-sites.rb +0 -252
  84. data/scripts/provision-org-sites.sh +0 -23
  85. data/scripts/sync-hub-metadata.rb +0 -184
  86. data/scripts/sync-hub-metadata.sh +0 -22
@@ -0,0 +1,463 @@
1
+ // ============================================================================
2
+ // Docs code-example chrome — Bootstrap-docs-style example/snippet blocks
3
+ // ----------------------------------------------------------------------------
4
+ // Split out of core/_docs-layout.scss (was lines 762-1214). Styles the
5
+ // `.bd-code-snippet`, `.bd-example*`, `.bd-clipboard`/`.bd-edit`, and
6
+ // `.bd-placeholder-img*` blocks used by _includes/docs/bootstrap-docs.html and
7
+ // assets/js/docs.min.js. Imported immediately after core/docs-layout in
8
+ // assets/css/main.scss so cascade order is unchanged.
9
+ // ============================================================================
10
+
11
+ .bd-code-snippet {
12
+ margin: 0 -1.5rem 1rem;
13
+ border: solid var(--bs-border-color);
14
+ border-width: 1px 0
15
+ }
16
+
17
+ @media (min-width: 768px) {
18
+ .bd-code-snippet {
19
+ margin-right:0;
20
+ margin-left: 0;
21
+ border-width: 1px;
22
+ border-radius: var(--bs-border-radius)
23
+ }
24
+ }
25
+
26
+ .bd-example {
27
+ --bd-example-padding: 1rem;
28
+ position: relative;
29
+ padding: var(--bd-example-padding);
30
+ margin: 0 -1.5rem 1rem;
31
+ border: solid var(--bs-border-color);
32
+ border-width: 1px 0
33
+ }
34
+
35
+ .bd-example::after {
36
+ display: block;
37
+ clear: both;
38
+ content: null
39
+ }
40
+
41
+ @media (min-width: 768px) {
42
+ .bd-example {
43
+ --bd-example-padding: 1.5rem;
44
+ margin-right: 0;
45
+ margin-left: 0;
46
+ border-width: 1px;
47
+ border-radius: var(--bs-border-radius)
48
+ }
49
+ }
50
+
51
+ .bd-example+p {
52
+ margin-top: 2rem
53
+ }
54
+
55
+ .bd-example>.form-control+.form-control {
56
+ margin-top: .5rem
57
+ }
58
+
59
+ .bd-example>.nav+.nav,.bd-example>.alert+.alert,.bd-example>.navbar+.navbar,.bd-example>.progress+.progress {
60
+ margin-top: 1rem
61
+ }
62
+
63
+ .bd-example>.dropdown-menu {
64
+ position: static;
65
+ display: block
66
+ }
67
+
68
+ .bd-example>:last-child,.bd-example>nav:last-child .breadcrumb {
69
+ margin-bottom: 0
70
+ }
71
+
72
+ .bd-example>hr:last-child {
73
+ margin-bottom: 1rem
74
+ }
75
+
76
+ .bd-example>svg+svg,.bd-example>img+img {
77
+ margin-left: .5rem
78
+ }
79
+
80
+ .bd-example>.btn,.bd-example>.btn-group {
81
+ margin: .25rem .125rem
82
+ }
83
+
84
+ .bd-example>.btn-toolbar+.btn-toolbar {
85
+ margin-top: .5rem
86
+ }
87
+
88
+ .bd-example>.list-group {
89
+ max-width: 400px
90
+ }
91
+
92
+ .bd-example>[class*="list-group-horizontal"] {
93
+ max-width: 100%
94
+ }
95
+
96
+ .bd-example .fixed-top,.bd-example .sticky-top {
97
+ position: static;
98
+ margin: calc(var(--bd-example-padding) * -1) calc(var(--bd-example-padding) * -1) var(--bd-example-padding)
99
+ }
100
+
101
+ .bd-example .fixed-bottom,.bd-example .sticky-bottom {
102
+ position: static;
103
+ margin: var(--bd-example-padding) calc(var(--bd-example-padding) * -1) calc(var(--bd-example-padding) * -1)
104
+ }
105
+
106
+ .bd-example .pagination {
107
+ margin-bottom: 0
108
+ }
109
+
110
+ .bd-example-row [class^="col"],.bd-example-cols [class^="col"]>*,.bd-example-cssgrid [class*="grid"]>* {
111
+ padding-top: .75rem;
112
+ padding-bottom: .75rem;
113
+ background-color: rgba(var(--bd-violet-rgb), 0.15);
114
+ border: 1px solid rgba(var(--bd-violet-rgb), 0.3)
115
+ }
116
+
117
+ .bd-example-row .row+.row,.bd-example-cssgrid .grid+.grid {
118
+ margin-top: 1rem
119
+ }
120
+
121
+ .bd-example-row-flex-cols .row {
122
+ min-height: 10rem;
123
+ background-color: rgba(var(--bd-violet-rgb), 0.15)
124
+ }
125
+
126
+ .bd-example-flex div:not(.vr) {
127
+ background-color: rgba(var(--bd-violet-rgb), 0.15);
128
+ border: 1px solid rgba(var(--bd-violet-rgb), 0.3)
129
+ }
130
+
131
+ .example-container {
132
+ width: 800px;
133
+ --bs-gutter-x: 1.5rem;
134
+ --bs-gutter-y: 0;
135
+ width: 100%;
136
+ padding-right: calc(var(--bs-gutter-x) * .5);
137
+ padding-left: calc(var(--bs-gutter-x) * .5);
138
+ margin-right: auto;
139
+ margin-left: auto
140
+ }
141
+
142
+ .example-row {
143
+ --bs-gutter-x: 1.5rem;
144
+ --bs-gutter-y: 0;
145
+ display: flex;
146
+ flex-wrap: wrap;
147
+ margin-top: calc(-1 * var(--bs-gutter-y));
148
+ margin-right: calc(-.5 * var(--bs-gutter-x));
149
+ margin-left: calc(-.5 * var(--bs-gutter-x))
150
+ }
151
+
152
+ .example-content-main {
153
+ flex-shrink: 0;
154
+ width: 100%;
155
+ max-width: 100%;
156
+ padding-right: calc(var(--bs-gutter-x) * .5);
157
+ padding-left: calc(var(--bs-gutter-x) * .5);
158
+ margin-top: var(--bs-gutter-y)
159
+ }
160
+
161
+ @media (min-width: 576px) {
162
+ .example-content-main {
163
+ flex:0 0 auto;
164
+ width: 50%
165
+ }
166
+ }
167
+
168
+ @media (min-width: 992px) {
169
+ .example-content-main {
170
+ flex:0 0 auto;
171
+ width: 66.666667%
172
+ }
173
+ }
174
+
175
+ .example-content-secondary {
176
+ flex-shrink: 0;
177
+ width: 100%;
178
+ max-width: 100%;
179
+ padding-right: calc(var(--bs-gutter-x) * .5);
180
+ padding-left: calc(var(--bs-gutter-x) * .5);
181
+ margin-top: var(--bs-gutter-y)
182
+ }
183
+
184
+ @media (min-width: 576px) {
185
+ .example-content-secondary {
186
+ flex:0 0 auto;
187
+ width: 50%
188
+ }
189
+ }
190
+
191
+ @media (min-width: 992px) {
192
+ .example-content-secondary {
193
+ flex:0 0 auto;
194
+ width: 33.333333%
195
+ }
196
+ }
197
+
198
+ .bd-example-ratios .ratio {
199
+ display: inline-block;
200
+ width: 10rem;
201
+ color: var(--bs-secondary-color);
202
+ background-color: var(--bs-tertiary-bg);
203
+ border: var(--bs-border-width) solid var(--bs-border-color)
204
+ }
205
+
206
+ .bd-example-ratios .ratio>div {
207
+ display: flex;
208
+ align-items: center;
209
+ justify-content: center
210
+ }
211
+
212
+ .bd-example-ratios-breakpoint .ratio-4x3 {
213
+ width: 16rem
214
+ }
215
+
216
+ @media (min-width: 768px) {
217
+ .bd-example-ratios-breakpoint .ratio-4x3 {
218
+ --bs-aspect-ratio: 50%
219
+ }
220
+ }
221
+
222
+ .bd-example-offcanvas .offcanvas {
223
+ position: static;
224
+ display: block;
225
+ height: 200px;
226
+ visibility: visible;
227
+ transform: translate(0)
228
+ }
229
+
230
+ .tooltip-demo a {
231
+ white-space: nowrap
232
+ }
233
+
234
+ .tooltip-demo .btn {
235
+ margin: .25rem .125rem
236
+ }
237
+
238
+ .custom-tooltip {
239
+ --bs-tooltip-bg: var(--bd-violet-bg);
240
+ --bs-tooltip-color: var(--bs-white)
241
+ }
242
+
243
+ .custom-popover {
244
+ --bs-popover-max-width: 200px;
245
+ --bs-popover-border-color: var(--bd-violet-bg);
246
+ --bs-popover-header-bg: var(--bd-violet-bg);
247
+ --bs-popover-header-color: var(--bs-white);
248
+ --bs-popover-body-padding-x: 1rem;
249
+ --bs-popover-body-padding-y: .5rem
250
+ }
251
+
252
+ .scrollspy-example {
253
+ height: 200px;
254
+ margin-top: .5rem;
255
+ overflow: auto
256
+ }
257
+
258
+ .scrollspy-example-2 {
259
+ height: 350px;
260
+ overflow: auto
261
+ }
262
+
263
+ .simple-list-example-scrollspy .active {
264
+ background-color: rgba(var(--bd-violet-rgb), 0.15)
265
+ }
266
+
267
+ .bd-example-border-utils [class^="border"] {
268
+ display: inline-block;
269
+ width: 5rem;
270
+ height: 5rem;
271
+ margin: .25rem;
272
+ background-color: var(--bs-tertiary-bg)
273
+ }
274
+
275
+ .bd-example-rounded-utils [class*="rounded"] {
276
+ margin: .25rem
277
+ }
278
+
279
+ .bd-example-position-utils {
280
+ position: relative;
281
+ padding: 2rem
282
+ }
283
+
284
+ .bd-example-position-utils .position-relative {
285
+ height: 200px;
286
+ background-color: var(--bs-tertiary-bg)
287
+ }
288
+
289
+ .bd-example-position-utils .position-absolute {
290
+ width: 2rem;
291
+ height: 2rem;
292
+ background-color: var(--bs-body-color);
293
+ border-radius: .375rem
294
+ }
295
+
296
+ .bd-example-position-examples::after {
297
+ content: none
298
+ }
299
+
300
+ .bd-example-placeholder-cards::after {
301
+ display: none
302
+ }
303
+
304
+ .bd-example-placeholder-cards .card {
305
+ width: 18rem
306
+ }
307
+
308
+ .bd-example-toasts {
309
+ min-height: 240px
310
+ }
311
+
312
+ .bd-example-zindex-levels {
313
+ min-height: 15rem
314
+ }
315
+
316
+ .bd-example-zindex-levels>div {
317
+ color: var(--bs-body-bg);
318
+ background-color: var(--bd-violet);
319
+ border: 1px solid var(--bd-purple)
320
+ }
321
+
322
+ .bd-example-zindex-levels>div>span {
323
+ position: absolute;
324
+ right: 5px;
325
+ bottom: 0
326
+ }
327
+
328
+ .bd-example-zindex-levels>:nth-child(2) {
329
+ top: 3rem;
330
+ left: 3rem
331
+ }
332
+
333
+ .bd-example-zindex-levels>:nth-child(3) {
334
+ top: 4.5rem;
335
+ left: 4.5rem
336
+ }
337
+
338
+ .bd-example-zindex-levels>:nth-child(4) {
339
+ top: 6rem;
340
+ left: 6rem
341
+ }
342
+
343
+ .bd-example-zindex-levels>:nth-child(5) {
344
+ top: 7.5rem;
345
+ left: 7.5rem
346
+ }
347
+
348
+ // Wrapper only — pre.highlight carries its own padding when no wrapper exists.
349
+ // Rouge blocks (.highlighter-rouge) are styled in core/code-copy.scss.
350
+ .highlight:not(pre):not(.highlighter-rouge > .highlight) {
351
+ position: relative;
352
+ padding: var(--zer0-space-2) var(--zer0-space-3);
353
+ background-color: var(--bd-pre-bg)
354
+ }
355
+
356
+ @media (min-width: 768px) {
357
+ .highlight:not(pre):not(.highlighter-rouge > .highlight) {
358
+ border-radius: calc(var(--bs-border-radius) - 1px)
359
+ }
360
+ }
361
+
362
+ .highlight pre {
363
+ padding: 0;
364
+ margin: 0;
365
+ overflow-x: auto;
366
+ white-space: pre;
367
+ background-color: transparent;
368
+ border: 0
369
+ }
370
+
371
+ .highlight pre code {
372
+ font-size: inherit;
373
+ // color: var(--bs-body-color);
374
+ word-wrap: normal
375
+ }
376
+
377
+ .bd-example-snippet .highlight pre {
378
+ margin-right: 0
379
+ }
380
+
381
+ .highlight-toolbar {
382
+ background-color: var(--bd-pre-bg)
383
+ }
384
+
385
+ .highlight-toolbar+.highlight {
386
+ border-top-left-radius: 0;
387
+ border-top-right-radius: 0
388
+ }
389
+
390
+ @media (min-width: 768px) {
391
+ .bd-file-ref .highlight-toolbar {
392
+ border-top-left-radius:calc(var(--bs-border-radius) - 1px);
393
+ border-top-right-radius: calc(var(--bs-border-radius) - 1px)
394
+ }
395
+ }
396
+
397
+ .bd-content .bd-code-snippet {
398
+ margin-bottom: 1rem
399
+ }
400
+
401
+ .bd-clipboard,.bd-edit {
402
+ position: relative;
403
+ display: none;
404
+ float: right
405
+ }
406
+
407
+ .bd-clipboard+.highlight,.bd-edit+.highlight {
408
+ margin-top: 0
409
+ }
410
+
411
+ @media (min-width: 768px) {
412
+ .bd-clipboard,.bd-edit {
413
+ display:block
414
+ }
415
+ }
416
+
417
+ .btn-clipboard,.btn-edit {
418
+ display: block;
419
+ padding: .5em;
420
+ line-height: 1;
421
+ color: var(--bs-body-color);
422
+ background-color: var(--bd-pre-bg);
423
+ border: 0;
424
+ border-radius: .25rem
425
+ }
426
+
427
+ .btn-clipboard:hover,.btn-edit:hover {
428
+ color: var(--bs-link-hover-color)
429
+ }
430
+
431
+ .btn-clipboard:focus,.btn-edit:focus {
432
+ z-index: 3
433
+ }
434
+
435
+ .btn-clipboard {
436
+ position: relative;
437
+ z-index: 2;
438
+ margin-top: 1.25rem;
439
+ margin-right: .75rem
440
+ }
441
+
442
+ .bd-placeholder-img {
443
+ font-size: 1.125rem;
444
+ -webkit-user-select: none;
445
+ -moz-user-select: none;
446
+ user-select: none;
447
+ text-anchor: middle
448
+ }
449
+
450
+ .bd-placeholder-img-lg {
451
+ font-size: calc(1.475rem + 2.7vw)
452
+ }
453
+
454
+ @media (min-width: 1200px) {
455
+ .bd-placeholder-img-lg {
456
+ font-size:3.5rem
457
+ }
458
+ }
459
+
460
+ main a,main button,main input,main select,main textarea,main h2,main h3,main h4,main [tabindex="0"] {
461
+ scroll-margin-top: 80px;
462
+ scroll-margin-bottom: 100px
463
+ }