datalog-theme 0.10.1 → 0.11.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 +127 -0
- data/CITATION.cff +2 -2
- data/README.md +4 -2
- data/_data/i18n/en.yml +55 -3
- data/_data/i18n/es.yml +55 -3
- data/_data/i18n/pt.yml +55 -3
- data/_includes/analytics/dashboard.html +24 -9
- data/_includes/components/academic-dashboard.html +168 -133
- data/_includes/components/author-bio.html +7 -5
- data/_includes/components/author-list.html +6 -5
- data/_includes/components/citation-tools.html +2 -1
- data/_includes/components/content-provenance.html +19 -1
- data/_includes/components/correction-report.html +15 -8
- data/_includes/components/hero.html +22 -15
- data/_includes/components/package-index.html +121 -0
- data/_includes/components/package-install.html +27 -50
- data/_includes/components/post-list.html +14 -0
- data/_includes/components/responsive-image.html +15 -21
- data/_includes/footer.html +1 -1
- data/_includes/head.html +70 -11
- data/_includes/layouts/default/article.html +76 -46
- data/_includes/meta/dataset-json.html +171 -0
- data/_includes/meta/math-config.html +15 -1
- data/_includes/meta/package-json.html +69 -0
- data/_includes/meta/person-json.html +36 -13
- data/_includes/meta/publisher.html +15 -0
- data/_includes/meta/schema.html +108 -23
- data/_includes/meta/scholarly.html +10 -5
- data/_includes/post/related-posts.html +17 -43
- data/_includes/scripts.html +2 -2
- data/_includes/search/index-data.json +10 -1
- data/_includes/search/page.html +11 -6
- data/_layouts/archive.html +67 -0
- data/_layouts/dataset.html +2 -1
- data/_layouts/default.html +13 -11
- data/_layouts/docs.html +53 -0
- data/_layouts/home.html +30 -1
- data/_layouts/notebook.html +5 -1
- data/_layouts/package.html +38 -21
- data/_layouts/portfolio.html +1 -0
- data/_layouts/post.html +21 -62
- data/_layouts/project.html +2 -1
- data/_layouts/research.html +14 -2
- data/_plugins/analytics_dashboard.rb +4 -1
- data/_plugins/archive.rb +114 -0
- data/_plugins/authors.rb +50 -1
- data/_plugins/citation_exports.rb +12 -1
- data/_plugins/config_validator.rb +77 -2
- data/_plugins/correction_fallback.rb +110 -0
- data/_plugins/image_optimizer.rb +129 -22
- data/_plugins/math_preprocessor.rb +7 -48
- data/_plugins/notebook_converter.rb +44 -5
- data/_plugins/packages.rb +84 -0
- data/_plugins/page_dates.rb +37 -0
- data/_plugins/references.rb +16 -2
- data/_plugins/related_posts.rb +149 -0
- data/_plugins/search_sections.rb +110 -0
- data/_plugins/site_identity.rb +42 -0
- data/_plugins/social_cards.rb +17 -0
- data/_sass/_academic-dashboard.scss +18 -30
- data/_sass/_base.scss +2 -0
- data/_sass/_components.scss +21 -23
- data/_sass/_docs.scss +143 -0
- data/_sass/_features.scss +6 -0
- data/_sass/_layout.scss +65 -6
- data/_sass/_mathematical.scss +61 -19
- data/_sass/_notebooks.scss +1 -32
- data/_sass/_package-docs.scss +6 -9
- data/_sass/_post-components.scss +23 -23
- data/_sass/_print.scss +1 -1
- data/_sass/_search-page.scss +75 -0
- data/_sass/_search.scss +17 -26
- data/_sass/_syntax-highlighting.scss +23 -1
- data/_sass/_theme.scss +1 -0
- data/_sass/_utilities.scss +87 -40
- data/_sass/_variables.scss +31 -29
- data/assets/css/main.scss +2 -1
- data/assets/js/dist/academic.js +1 -1
- data/assets/js/dist/analytics-dashboard.js +1 -1
- data/assets/js/dist/chunks/chunk-TNVD6UAM.js +1 -0
- data/assets/js/dist/comments.js +1 -1
- data/assets/js/dist/contact.js +1 -1
- data/assets/js/dist/core.js +1 -1
- data/assets/js/dist/corrections.js +5 -1
- data/assets/js/dist/loader.js +1 -1
- data/assets/js/dist/math.js +2 -1
- data/assets/js/dist/moderation.js +1 -1
- data/assets/js/dist/reactions.js +1 -1
- data/assets/js/dist/search.js +1 -1
- data/assets/js/dist/sources.json +20 -16
- data/assets/js/dist/subscriptions.js +1 -1
- data/assets/js/loader.js +6 -2
- data/lib/datalog/audit/checks.rb +269 -0
- data/lib/datalog/audit/known_keys.rb +61 -0
- data/lib/datalog/audit/site_reader.rb +118 -0
- data/lib/datalog/audit/source_file.rb +85 -0
- data/lib/datalog/audit.rb +145 -0
- data/lib/datalog/citations/bibtex.rb +200 -0
- data/lib/datalog/citations/entry.rb +333 -0
- data/lib/datalog/citations/markup.rb +79 -0
- data/lib/datalog/cli.rb +164 -89
- data/lib/datalog/critical_css.rb +126 -21
- data/lib/datalog/latex_speech/words.json +88 -0
- data/lib/datalog/latex_speech.rb +355 -0
- data/lib/datalog/packages/command.rb +51 -0
- data/lib/datalog/packages/refresh.rb +187 -0
- data/lib/datalog/packages.rb +177 -0
- data/lib/datalog/plugin_system.rb +5 -0
- data/lib/datalog/plugins/citations.rb +325 -109
- data/lib/datalog/site_config.rb +26 -0
- data/lib/datalog/social_cards/font.rb +286 -0
- data/lib/datalog/social_cards/fonts/IBMPlexSans-Regular.ttf +0 -0
- data/lib/datalog/social_cards/fonts/IBMPlexSerif-SemiBold.ttf +0 -0
- data/lib/datalog/social_cards/fonts/OFL.txt +92 -0
- data/lib/datalog/social_cards/geometry.rb +51 -0
- data/lib/datalog/social_cards/outline.rb +54 -0
- data/lib/datalog/social_cards/plain_text.rb +258 -0
- data/lib/datalog/social_cards/template.rb +322 -0
- data/lib/datalog/social_cards/template.svg +17 -0
- data/lib/datalog/social_cards/typesetter.rb +178 -0
- data/lib/datalog/social_cards.rb +369 -0
- data/lib/datalog/theme/updater.rb +307 -0
- data/lib/datalog/theme/version.rb +1 -1
- metadata +44 -7
- data/_includes/components/enhanced-code-block.html +0 -212
- data/_includes/components/performance-monitor.html +0 -170
- data/_includes/components/viz-table-fallback.html +0 -19
- data/_plugins/datalog_bibliography.rb +0 -21
- data/assets/js/dist/chunks/chunk-WIRUK3OZ.js +0 -1
data/_sass/_docs.scss
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
@use 'sass:map';
|
|
2
|
+
@use 'variables' as *;
|
|
3
|
+
|
|
4
|
+
// The guide layout is opt-in. Other pages and theme consumers keep their layout.
|
|
5
|
+
.layout-docs .site-main.container,
|
|
6
|
+
.layout-docs .page > .container {
|
|
7
|
+
width: min(100% - 2rem, 76rem);
|
|
8
|
+
max-width: none;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.docs-shell {
|
|
12
|
+
display: grid;
|
|
13
|
+
gap: clamp(1.25rem, 3vw, 2.5rem);
|
|
14
|
+
align-items: start;
|
|
15
|
+
min-width: 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.docs-sidebar {
|
|
19
|
+
padding: 1rem;
|
|
20
|
+
border: 1px solid var(--color-border);
|
|
21
|
+
border-radius: 0.75rem;
|
|
22
|
+
background: var(--color-background-secondary);
|
|
23
|
+
color: var(--color-text-primary);
|
|
24
|
+
|
|
25
|
+
ul {
|
|
26
|
+
display: grid;
|
|
27
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
28
|
+
gap: 0.15rem;
|
|
29
|
+
margin: 0 0 0.75rem;
|
|
30
|
+
padding: 0;
|
|
31
|
+
list-style: none;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
a {
|
|
35
|
+
display: block;
|
|
36
|
+
padding: 0.4rem 0.6rem;
|
|
37
|
+
border-radius: 0.35rem;
|
|
38
|
+
color: var(--color-text-secondary);
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
overflow-wrap: anywhere;
|
|
41
|
+
|
|
42
|
+
&:hover,
|
|
43
|
+
&:focus-visible,
|
|
44
|
+
&[aria-current='page'] {
|
|
45
|
+
color: var(--color-accent-text);
|
|
46
|
+
background: var(--color-background);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&[aria-current='page'] { font-weight: 700; }
|
|
50
|
+
&:focus-visible { outline: 2px solid var(--color-accent-text); outline-offset: 2px; }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.docs-sidebar__heading {
|
|
55
|
+
margin: 0.8rem 0 0.35rem;
|
|
56
|
+
padding-inline: 0.6rem;
|
|
57
|
+
color: var(--color-text-primary);
|
|
58
|
+
font-size: 0.82rem;
|
|
59
|
+
letter-spacing: 0.04em;
|
|
60
|
+
text-transform: uppercase;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.docs-sidebar .docs-sidebar__home,
|
|
64
|
+
.docs-sidebar .docs-sidebar__repo { color: var(--color-accent-text); font-weight: 600; }
|
|
65
|
+
|
|
66
|
+
.docs-main,
|
|
67
|
+
.docs-content,
|
|
68
|
+
.docs-on-this-page { min-width: 0; }
|
|
69
|
+
|
|
70
|
+
.docs-content {
|
|
71
|
+
max-width: 48rem;
|
|
72
|
+
overflow-wrap: anywhere;
|
|
73
|
+
|
|
74
|
+
:is(h2, h3, h4) { scroll-margin-top: calc(var(--header-height, 96px) + 1rem); }
|
|
75
|
+
h2 { padding-bottom: 0.45rem; border-bottom: 1px solid var(--color-border); }
|
|
76
|
+
:is(p, li) { line-height: 1.7; }
|
|
77
|
+
|
|
78
|
+
// Keep long examples inside the reading column, including rendered math.
|
|
79
|
+
pre,
|
|
80
|
+
.highlighter-rouge,
|
|
81
|
+
.code-block-wrapper { max-width: 100%; overflow-x: auto; }
|
|
82
|
+
:is(.math-expression, mjx-container[display='true'], .katex-display, figure) {
|
|
83
|
+
max-width: 100%;
|
|
84
|
+
overflow-x: auto;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
table:not(.rouge-table) {
|
|
88
|
+
display: block;
|
|
89
|
+
max-width: 100%;
|
|
90
|
+
overflow-x: auto;
|
|
91
|
+
border-collapse: collapse;
|
|
92
|
+
margin-block: 1.5rem;
|
|
93
|
+
|
|
94
|
+
th, td { padding: 0.65rem 0.9rem; border: 1px solid var(--color-border); text-align: left; }
|
|
95
|
+
th { background: var(--color-background-secondary); }
|
|
96
|
+
caption { color: var(--color-text-secondary); }
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.callout {
|
|
100
|
+
margin-block: 1.5rem;
|
|
101
|
+
border-left-color: var(--color-accent-text);
|
|
102
|
+
background: var(--color-background-secondary);
|
|
103
|
+
color: var(--color-text-primary);
|
|
104
|
+
|
|
105
|
+
p:last-child { margin-bottom: 0; }
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.code-copy:focus-visible {
|
|
109
|
+
outline: 2px solid var(--color-accent-text);
|
|
110
|
+
outline-offset: 2px;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.docs-pagination {
|
|
115
|
+
display: flex;
|
|
116
|
+
flex-wrap: wrap;
|
|
117
|
+
gap: 1rem;
|
|
118
|
+
justify-content: space-between;
|
|
119
|
+
margin-block: 2rem 1rem;
|
|
120
|
+
padding-block: 1rem;
|
|
121
|
+
border-top: 1px solid var(--color-border);
|
|
122
|
+
|
|
123
|
+
a { color: var(--color-accent-text); font-weight: 600; }
|
|
124
|
+
span { display: block; color: var(--color-text-secondary); font-size: 0.85rem; font-weight: 400; }
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.docs-back-to-top { color: var(--color-accent-text); }
|
|
128
|
+
|
|
129
|
+
@media (min-width: map.get($breakpoints, lg)) {
|
|
130
|
+
.docs-shell { grid-template-columns: 12rem minmax(0, 1fr) 12rem; }
|
|
131
|
+
.docs-shell:not(:has(.docs-on-this-page)) { grid-template-columns: 12rem minmax(0, 1fr); }
|
|
132
|
+
.docs-sidebar,
|
|
133
|
+
.docs-on-this-page { position: sticky; top: 8.5rem; max-height: calc(100vh - 9rem); overflow-y: auto; }
|
|
134
|
+
.docs-sidebar ul { grid-template-columns: 1fr; }
|
|
135
|
+
.docs-on-this-page .enhanced-toc { font-size: 0.9rem; }
|
|
136
|
+
.docs-on-this-page .enhanced-toc__heading { font-size: 0.9rem; }
|
|
137
|
+
.docs-on-this-page .enhanced-toc__content { padding: 0.5rem; }
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
@media (max-width: map.get($breakpoints, lg)) {
|
|
141
|
+
.docs-on-this-page { grid-row: 2; }
|
|
142
|
+
.docs-on-this-page .enhanced-toc__stats { display: none; }
|
|
143
|
+
}
|
data/_sass/_features.scss
CHANGED
|
@@ -15,3 +15,9 @@ $notebooks: true !default;
|
|
|
15
15
|
$packages: true !default;
|
|
16
16
|
$academic-dashboard: true !default;
|
|
17
17
|
$open-science-badges: true !default;
|
|
18
|
+
|
|
19
|
+
// The framed panel around each display equation that
|
|
20
|
+
// theme_options.math.display_style: card asks for. Its rules apply under the
|
|
21
|
+
// `math-card` class the layout puts on <body> for such a site, so a stylesheet
|
|
22
|
+
// that carries them still sets a plain site's equations plain.
|
|
23
|
+
$math-card: true !default;
|
data/_sass/_layout.scss
CHANGED
|
@@ -73,15 +73,33 @@ body.dark-mode .page-meta {
|
|
|
73
73
|
// ---------------------------------------------------------------------------
|
|
74
74
|
.hero {
|
|
75
75
|
position: relative;
|
|
76
|
-
//
|
|
77
|
-
|
|
78
|
-
background: $color-surface-900 var(--hero-bg) center / cover no-repeat;
|
|
76
|
+
// A dark base keeps the white copy readable with or without an image.
|
|
77
|
+
background: $color-surface-900;
|
|
79
78
|
color: #fff;
|
|
80
79
|
padding: clamp(4rem, 10vw, 8rem) 0;
|
|
81
80
|
text-align: center;
|
|
82
81
|
overflow: hidden;
|
|
83
82
|
}
|
|
84
83
|
|
|
84
|
+
.hero--image {
|
|
85
|
+
background: $color-surface-900 var(--hero-bg) center / cover no-repeat;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.hero--contained {
|
|
89
|
+
border-radius: map.get($radius, xl);
|
|
90
|
+
padding: clamp(2.5rem, 6vw, 5rem);
|
|
91
|
+
text-align: left;
|
|
92
|
+
|
|
93
|
+
.hero-content {
|
|
94
|
+
width: 100%;
|
|
95
|
+
padding: 0;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.hero-tagline {
|
|
99
|
+
margin-inline: 0;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
85
103
|
.hero-overlay {
|
|
86
104
|
position: absolute;
|
|
87
105
|
inset: 0;
|
|
@@ -97,6 +115,33 @@ body.dark-mode .page-meta {
|
|
|
97
115
|
pointer-events: none;
|
|
98
116
|
}
|
|
99
117
|
|
|
118
|
+
.hero-actions {
|
|
119
|
+
display: flex;
|
|
120
|
+
flex-wrap: wrap;
|
|
121
|
+
gap: map.get($spacing, 3);
|
|
122
|
+
|
|
123
|
+
.btn {
|
|
124
|
+
min-height: 2.75rem;
|
|
125
|
+
align-items: center;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.hero .btn-secondary,
|
|
130
|
+
body.dark-mode .hero .btn-secondary {
|
|
131
|
+
color: #fff;
|
|
132
|
+
border-color: rgba(#fff, 0.75);
|
|
133
|
+
|
|
134
|
+
&:hover,
|
|
135
|
+
&:focus-visible {
|
|
136
|
+
color: #fff;
|
|
137
|
+
background: rgba(#fff, 0.12);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
@media (prefers-reduced-motion: reduce) {
|
|
142
|
+
.hero-actions .btn { transition: none; }
|
|
143
|
+
}
|
|
144
|
+
|
|
100
145
|
.hero-content {
|
|
101
146
|
position: relative;
|
|
102
147
|
z-index: 1;
|
|
@@ -191,6 +236,14 @@ body.dark-mode .section-title {
|
|
|
191
236
|
}
|
|
192
237
|
}
|
|
193
238
|
|
|
239
|
+
.home-feature-card {
|
|
240
|
+
border-top: 3px solid $color-accent-secondary;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
body.dark-mode .home-feature-card {
|
|
244
|
+
border-top-color: $dark-accent-secondary;
|
|
245
|
+
}
|
|
246
|
+
|
|
194
247
|
.card-meta {
|
|
195
248
|
font-size: map.get($font-size-scale, xs);
|
|
196
249
|
color: $color-ink-500;
|
|
@@ -279,10 +332,10 @@ body.dark-mode .footer {
|
|
|
279
332
|
}
|
|
280
333
|
}
|
|
281
334
|
|
|
282
|
-
// body.dark-mode a outranks the rule above;
|
|
283
|
-
//
|
|
335
|
+
// body.dark-mode a outranks the rule above; use the readable dark accent
|
|
336
|
+
// on the navy footer too.
|
|
284
337
|
body.dark-mode & a {
|
|
285
|
-
color:
|
|
338
|
+
color: $dark-accent-primary;
|
|
286
339
|
}
|
|
287
340
|
|
|
288
341
|
p {
|
|
@@ -794,6 +847,7 @@ body.dark-mode .year-chart__label {
|
|
|
794
847
|
|
|
795
848
|
.project-links {
|
|
796
849
|
display: flex;
|
|
850
|
+
flex-wrap: wrap;
|
|
797
851
|
gap: map.get($spacing, 2);
|
|
798
852
|
padding-top: map.get($spacing, 2);
|
|
799
853
|
}
|
|
@@ -998,6 +1052,11 @@ body.dark-mode .post-meta-list {
|
|
|
998
1052
|
border-bottom-color: rgba($dark-ink-500, 0.12);
|
|
999
1053
|
}
|
|
1000
1054
|
|
|
1055
|
+
// The same list under a page's own heading, kept off the content below (#411).
|
|
1056
|
+
.article-meta {
|
|
1057
|
+
margin-bottom: map.get($spacing, 5);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1001
1060
|
.post-meta-term {
|
|
1002
1061
|
font-size: map.get($font-size-scale, xs);
|
|
1003
1062
|
font-weight: 600;
|
data/_sass/_mathematical.scss
CHANGED
|
@@ -2,26 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
@use 'variables' as *;
|
|
4
4
|
@use 'mixins' as *;
|
|
5
|
+
@use 'features';
|
|
5
6
|
|
|
7
|
+
// A display equation stands on its own line with space around it, as in print
|
|
8
|
+
// (theme_options.math.display_style: plain, the default): no frame, nothing
|
|
9
|
+
// added to its height but its margins. Its copy and edit tools appear where
|
|
10
|
+
// the pointer or the focus is.
|
|
6
11
|
.math-expression {
|
|
7
12
|
position: relative;
|
|
8
|
-
margin:
|
|
9
|
-
padding: map.get($spacing, 6) map.get($spacing, 6) map.get($spacing, 5) map.get($spacing, 6);
|
|
10
|
-
border-radius: 1.1rem;
|
|
11
|
-
border: 1px solid rgba($color-neutral-900, 0.12);
|
|
12
|
-
background: rgba($color-neutral-100, 0.9);
|
|
13
|
-
box-shadow: 0 12px 30px rgba($color-neutral-900, 0.08);
|
|
13
|
+
margin: 1.25rem auto;
|
|
14
14
|
display: grid;
|
|
15
15
|
min-width: 0;
|
|
16
16
|
max-width: 100%;
|
|
17
17
|
overflow-x: auto;
|
|
18
18
|
gap: map.get($spacing, 3);
|
|
19
|
-
|
|
19
|
+
// Room at the sides for the equation's focus ring, which the scrolling box
|
|
20
|
+
// would otherwise clip; above and below, MathJax's own margins leave room.
|
|
21
|
+
padding-inline: map.get($spacing, 1);
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
background: rgba($color-neutral-100, 0.96);
|
|
23
|
+
> mjx-container:focus-visible {
|
|
24
|
+
outline: 2px solid $color-accent-primary;
|
|
25
|
+
outline-offset: 2px;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
mjx-container[display='true'] {
|
|
@@ -77,13 +78,23 @@
|
|
|
77
78
|
font-family: $font-family-serif;
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
// At the end of the line, which the equation leaves empty unless it fills the
|
|
82
|
+
// column, and out of sight until the pointer or the focus reaches the equation.
|
|
83
|
+
// It stays in the tab order: tabbing onto a button shows it.
|
|
80
84
|
.math-expression__toolbar {
|
|
81
85
|
position: absolute;
|
|
82
|
-
top:
|
|
83
|
-
|
|
86
|
+
top: 50%;
|
|
87
|
+
// Room for a button's focus ring, which the scrolling box would clip.
|
|
88
|
+
inset-inline-end: map.get($spacing, 2);
|
|
89
|
+
transform: translateY(-50%);
|
|
84
90
|
display: inline-flex;
|
|
85
91
|
gap: map.get($spacing, 2);
|
|
86
92
|
z-index: 2;
|
|
93
|
+
opacity: 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.math-expression:is(:hover, :focus-within) .math-expression__toolbar {
|
|
97
|
+
opacity: 1;
|
|
87
98
|
}
|
|
88
99
|
|
|
89
100
|
.math-expression__button {
|
|
@@ -313,12 +324,6 @@
|
|
|
313
324
|
}
|
|
314
325
|
|
|
315
326
|
body.dark-mode {
|
|
316
|
-
.math-expression {
|
|
317
|
-
background: rgba($dark-surface-200, 0.92);
|
|
318
|
-
border-color: rgba($dark-ink-500, 0.3);
|
|
319
|
-
box-shadow: none;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
327
|
.math-expression__number {
|
|
323
328
|
color: rgba($dark-ink-500, 0.85);
|
|
324
329
|
}
|
|
@@ -403,3 +408,40 @@ body.dark-mode {
|
|
|
403
408
|
}
|
|
404
409
|
}
|
|
405
410
|
}
|
|
411
|
+
|
|
412
|
+
// theme_options.math.display_style: card. Each display equation in a framed
|
|
413
|
+
// panel with its tools always in view, as before the theme set equations
|
|
414
|
+
// plain. assets/css/main.scss compiles these rules only for a site that asks
|
|
415
|
+
// for the card, and the layout puts `math-card` on <body> for it.
|
|
416
|
+
@if features.$math-card {
|
|
417
|
+
.math-card {
|
|
418
|
+
.math-expression {
|
|
419
|
+
margin-block: map.get($spacing, 6);
|
|
420
|
+
padding: map.get($spacing, 6) map.get($spacing, 6) map.get($spacing, 5) map.get($spacing, 6);
|
|
421
|
+
border-radius: 1.1rem;
|
|
422
|
+
border: 1px solid rgba($color-neutral-900, 0.12);
|
|
423
|
+
background: rgba($color-neutral-100, 0.9);
|
|
424
|
+
box-shadow: 0 12px 30px rgba($color-neutral-900, 0.08);
|
|
425
|
+
transition: border-color $transition-snappy, box-shadow $transition-snappy, background $transition-snappy;
|
|
426
|
+
|
|
427
|
+
&:focus-within {
|
|
428
|
+
border-color: $color-accent-primary;
|
|
429
|
+
box-shadow: 0 0 0 4px rgba($color-accent-primary, 0.18);
|
|
430
|
+
background: rgba($color-neutral-100, 0.96);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
.math-expression__toolbar {
|
|
435
|
+
top: map.get($spacing, 3);
|
|
436
|
+
inset-inline: map.get($spacing, 3) auto;
|
|
437
|
+
transform: none;
|
|
438
|
+
opacity: 1;
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
body.dark-mode.math-card .math-expression {
|
|
443
|
+
background: rgba($dark-surface-200, 0.92);
|
|
444
|
+
border-color: rgba($dark-ink-500, 0.3);
|
|
445
|
+
box-shadow: none;
|
|
446
|
+
}
|
|
447
|
+
}
|
data/_sass/_notebooks.scss
CHANGED
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
|
|
100
100
|
.notebook-article__tags li {
|
|
101
101
|
background: rgba($color-accent-tertiary, 0.18);
|
|
102
|
-
color: $color-accent-tertiary;
|
|
102
|
+
color: $color-accent-tertiary-text;
|
|
103
103
|
border-radius: 999px;
|
|
104
104
|
padding: map.get($spacing, 1) map.get($spacing, 3);
|
|
105
105
|
font-size: map.get($font-size-scale, xs);
|
|
@@ -256,32 +256,6 @@
|
|
|
256
256
|
margin: 0;
|
|
257
257
|
}
|
|
258
258
|
|
|
259
|
-
.notebook-output--stream {
|
|
260
|
-
color: $color-ink-700;
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
.notebook-output--error {
|
|
264
|
-
color: $color-critical-600;
|
|
265
|
-
background: rgba($color-critical-200, 0.35);
|
|
266
|
-
border: 1px solid rgba($color-critical-400, 0.6);
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
.notebook-output__trace {
|
|
270
|
-
margin-top: map.get($spacing, 2);
|
|
271
|
-
white-space: pre-wrap;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
.notebook-output__figure {
|
|
275
|
-
margin: 0;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
.notebook-output__figure img {
|
|
279
|
-
width: 100%;
|
|
280
|
-
height: auto;
|
|
281
|
-
border-radius: 0.75rem;
|
|
282
|
-
box-shadow: 0 10px 30px rgba($color-ink-900, 0.15);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
259
|
.notebook-output-plotly,
|
|
286
260
|
.notebook-output-vega {
|
|
287
261
|
min-height: 320px;
|
|
@@ -299,11 +273,6 @@
|
|
|
299
273
|
margin: 0;
|
|
300
274
|
}
|
|
301
275
|
|
|
302
|
-
.notebook-output--widget {
|
|
303
|
-
font-style: italic;
|
|
304
|
-
color: $color-accent-secondary-text;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
276
|
.notebook-segment {
|
|
308
277
|
display: grid;
|
|
309
278
|
gap: map.get($spacing, 2);
|
data/_sass/_package-docs.scss
CHANGED
|
@@ -7,18 +7,15 @@
|
|
|
7
7
|
@use 'mixins' as *;
|
|
8
8
|
@use 'variables' as *;
|
|
9
9
|
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
// reads at 4.08:1 on the panel, short of WCAG AA, and a single darker value
|
|
14
|
-
// would fail again on a dark surface — so text uses the theme's own accent and
|
|
15
|
-
// secondary inks, which _theme.scss defines for each mode.
|
|
10
|
+
// The docs share the theme's indigo and navy palette; their text uses the
|
|
11
|
+
// effective mode's accent ink on both light and dark surfaces.
|
|
12
|
+
$pkg-primary: $color-accent-primary;
|
|
16
13
|
$pkg-primary-text: var(--color-accent-text);
|
|
17
14
|
$pkg-muted-text: var(--color-text-secondary);
|
|
18
15
|
$pkg-success: #27ae60;
|
|
19
16
|
$pkg-warning: #f39c12;
|
|
20
17
|
$pkg-danger: #e74c3c;
|
|
21
|
-
$pkg-sidebar-bg:
|
|
18
|
+
$pkg-sidebar-bg: $dark-surface-200;
|
|
22
19
|
$pkg-sidebar-text: #b3b3b3;
|
|
23
20
|
$pkg-sidebar-link: #9b9b9b;
|
|
24
21
|
$pkg-sidebar-link-hover: #fff;
|
|
@@ -200,7 +197,7 @@ body.dark-mode {
|
|
|
200
197
|
padding: 0.125rem 0.375rem;
|
|
201
198
|
border-radius: 3px;
|
|
202
199
|
font-size: 0.9em;
|
|
203
|
-
color:
|
|
200
|
+
color: var(--color-accent-text);
|
|
204
201
|
}
|
|
205
202
|
|
|
206
203
|
pre {
|
|
@@ -650,7 +647,7 @@ body.dark-mode {
|
|
|
650
647
|
}
|
|
651
648
|
|
|
652
649
|
a {
|
|
653
|
-
color: $pkg-primary;
|
|
650
|
+
color: $pkg-primary-text;
|
|
654
651
|
text-decoration: none;
|
|
655
652
|
|
|
656
653
|
&:hover {
|
data/_sass/_post-components.scss
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
// ============================================================================
|
|
10
10
|
|
|
11
11
|
@use 'mixins' as *;
|
|
12
|
+
@use 'variables' as *;
|
|
12
13
|
|
|
13
14
|
// ============================================================================
|
|
14
15
|
// Social Share Component
|
|
@@ -51,11 +52,11 @@
|
|
|
51
52
|
|
|
52
53
|
&:hover,
|
|
53
54
|
&:focus {
|
|
54
|
-
background-color: var(--color-accent
|
|
55
|
+
background-color: var(--color-accent);
|
|
55
56
|
color: #ffffff;
|
|
56
|
-
border-color: var(--color-accent
|
|
57
|
+
border-color: var(--color-accent);
|
|
57
58
|
transform: translateY(-2px);
|
|
58
|
-
box-shadow: 0 4px 12px rgba(
|
|
59
|
+
box-shadow: 0 4px 12px rgba($color-accent-primary, 0.2);
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
&:active {
|
|
@@ -141,7 +142,7 @@
|
|
|
141
142
|
}
|
|
142
143
|
|
|
143
144
|
&__link {
|
|
144
|
-
color: var(--color-accent
|
|
145
|
+
color: var(--color-accent);
|
|
145
146
|
text-decoration: none;
|
|
146
147
|
transition: color 0.2s ease;
|
|
147
148
|
|
|
@@ -197,14 +198,14 @@
|
|
|
197
198
|
width: 80px;
|
|
198
199
|
height: 80px;
|
|
199
200
|
border-radius: 50%;
|
|
200
|
-
background: linear-gradient(135deg, var(--color-accent, #
|
|
201
|
+
background: linear-gradient(135deg, var(--color-accent, #4338ca), $color-accent-secondary);
|
|
201
202
|
display: flex;
|
|
202
203
|
align-items: center;
|
|
203
204
|
justify-content: center;
|
|
204
205
|
font-size: 1.75rem;
|
|
205
206
|
font-weight: 700;
|
|
206
207
|
color: #ffffff;
|
|
207
|
-
box-shadow: 0 2px 8px rgba(
|
|
208
|
+
box-shadow: 0 2px 8px rgba($color-accent-primary, 0.2);
|
|
208
209
|
}
|
|
209
210
|
|
|
210
211
|
&__content {
|
|
@@ -221,7 +222,7 @@
|
|
|
221
222
|
&__affiliation {
|
|
222
223
|
margin: 0 0 1rem 0;
|
|
223
224
|
font-size: 0.95rem;
|
|
224
|
-
color: var(--color-accent
|
|
225
|
+
color: var(--color-accent);
|
|
225
226
|
font-weight: 500;
|
|
226
227
|
}
|
|
227
228
|
|
|
@@ -268,11 +269,11 @@
|
|
|
268
269
|
|
|
269
270
|
&:hover,
|
|
270
271
|
&:focus {
|
|
271
|
-
background-color: var(--color-accent
|
|
272
|
-
border-color: var(--color-accent
|
|
272
|
+
background-color: var(--color-accent);
|
|
273
|
+
border-color: var(--color-accent);
|
|
273
274
|
color: #ffffff;
|
|
274
275
|
transform: translateY(-2px);
|
|
275
|
-
box-shadow: 0 4px 12px rgba(
|
|
276
|
+
box-shadow: 0 4px 12px rgba($color-accent-primary, 0.2);
|
|
276
277
|
}
|
|
277
278
|
|
|
278
279
|
svg {
|
|
@@ -344,7 +345,7 @@
|
|
|
344
345
|
&__progress-bar {
|
|
345
346
|
height: 100%;
|
|
346
347
|
width: 0%;
|
|
347
|
-
background: linear-gradient(90deg, var(--color-accent, #
|
|
348
|
+
background: linear-gradient(90deg, var(--color-accent, #4338ca), $color-accent-secondary);
|
|
348
349
|
transition: width 0.2s ease;
|
|
349
350
|
}
|
|
350
351
|
|
|
@@ -381,8 +382,8 @@
|
|
|
381
382
|
&:hover,
|
|
382
383
|
&:focus {
|
|
383
384
|
background-color: var(--color-background-secondary, #f5f7ff);
|
|
384
|
-
border-color: var(--color-accent
|
|
385
|
-
color: var(--color-accent
|
|
385
|
+
border-color: var(--color-accent);
|
|
386
|
+
color: var(--color-accent);
|
|
386
387
|
}
|
|
387
388
|
}
|
|
388
389
|
|
|
@@ -434,16 +435,15 @@
|
|
|
434
435
|
|
|
435
436
|
&:hover,
|
|
436
437
|
&:focus {
|
|
437
|
-
color: var(--color-accent
|
|
438
|
-
background-color: rgba(
|
|
439
|
-
border-left-color: var(--color-accent
|
|
438
|
+
color: var(--color-accent);
|
|
439
|
+
background-color: rgba($color-accent-primary, 0.05);
|
|
440
|
+
border-left-color: var(--color-accent);
|
|
440
441
|
}
|
|
441
442
|
|
|
442
443
|
&.is-active {
|
|
443
|
-
|
|
444
|
-
color:
|
|
445
|
-
|
|
446
|
-
border-left-color: var(--color-accent, #3277f6);
|
|
444
|
+
color: var(--color-accent-text);
|
|
445
|
+
background-color: rgba($color-accent-primary, 0.1);
|
|
446
|
+
border-left-color: var(--color-accent);
|
|
447
447
|
font-weight: 500;
|
|
448
448
|
}
|
|
449
449
|
}
|
|
@@ -454,14 +454,14 @@
|
|
|
454
454
|
border-top: 1px solid var(--color-border, #e0e4ed);
|
|
455
455
|
background-color: var(--color-background, #ffffff);
|
|
456
456
|
font-size: 0.8125rem;
|
|
457
|
-
// The
|
|
457
|
+
// The secondary ink remains legible against the background in both modes.
|
|
458
458
|
color: var(--color-text-secondary, #6f6862);
|
|
459
459
|
}
|
|
460
460
|
|
|
461
461
|
&__reading-progress {
|
|
462
462
|
[data-progress-percent] {
|
|
463
463
|
font-weight: 600;
|
|
464
|
-
color: var(--color-accent
|
|
464
|
+
color: var(--color-accent);
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
|
|
@@ -763,6 +763,6 @@ body.dark-mode .difficulty-badge {
|
|
|
763
763
|
.author-bio__social-link:focus-visible,
|
|
764
764
|
.enhanced-toc a:focus-visible,
|
|
765
765
|
.enhanced-toc__toggle:focus-visible {
|
|
766
|
-
outline: 3px solid var(--color-accent
|
|
766
|
+
outline: 3px solid var(--color-accent);
|
|
767
767
|
outline-offset: 2px;
|
|
768
768
|
}
|