docrev 0.10.0 → 0.10.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.
- package/CHANGELOG.md +20 -0
- package/dist/lib/commands/context.d.ts +1 -1
- package/dist/lib/commands/context.d.ts.map +1 -1
- package/dist/lib/commands/context.js +1 -1
- package/dist/lib/commands/context.js.map +1 -1
- package/dist/lib/commands/sections.js +7 -7
- package/dist/lib/commands/sections.js.map +1 -1
- package/dist/lib/commands/sync.d.ts.map +1 -1
- package/dist/lib/commands/sync.js +93 -114
- package/dist/lib/commands/sync.js.map +1 -1
- package/dist/lib/commands/verify-anchors.js +6 -6
- package/dist/lib/commands/verify-anchors.js.map +1 -1
- package/dist/lib/sections.d.ts +35 -0
- package/dist/lib/sections.d.ts.map +1 -1
- package/dist/lib/sections.js +86 -2
- package/dist/lib/sections.js.map +1 -1
- package/docs-src/build.py +113 -113
- package/docs-src/extra.css +208 -208
- package/docs-src/md-to-html.lua +6 -6
- package/docs-src/template.html +116 -116
- package/issues.md +180 -0
- package/lib/commands/context.ts +2 -0
- package/lib/commands/sections.ts +7 -7
- package/lib/commands/sync.ts +95 -125
- package/lib/commands/verify-anchors.ts +6 -6
- package/lib/sections.ts +95 -2
- package/mkdocs.yml +64 -64
- package/package.json +1 -1
- package/site/assets/extra.css +208 -0
- package/site/commands.html +926 -0
- package/site/configuration.html +469 -0
- package/site/index.html +288 -0
- package/site/troubleshooting.html +461 -0
- package/site/workflow.html +518 -0
package/docs-src/build.py
CHANGED
|
@@ -1,113 +1,113 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
Build the docrev documentation site using pandoc + Bootstrap 5 Sandstone.
|
|
4
|
-
|
|
5
|
-
Usage (from project root):
|
|
6
|
-
python docs-src/build.py # build to site/
|
|
7
|
-
python docs-src/build.py --serve # build + open index.html
|
|
8
|
-
python docs-src/build.py --deploy # build + push to gh-pages
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
import argparse
|
|
12
|
-
import json
|
|
13
|
-
import shutil
|
|
14
|
-
import subprocess
|
|
15
|
-
import sys
|
|
16
|
-
import webbrowser
|
|
17
|
-
from pathlib import Path
|
|
18
|
-
|
|
19
|
-
HERE = Path(__file__).parent # docs-src/
|
|
20
|
-
PROJECT = HERE.parent # project root
|
|
21
|
-
DOCS = PROJECT / "docs"
|
|
22
|
-
SITE = PROJECT / "site"
|
|
23
|
-
TEMPLATE = HERE / "template.html"
|
|
24
|
-
EXTRA_CSS = HERE / "extra.css"
|
|
25
|
-
LUA_FILTER = HERE / "md-to-html.lua"
|
|
26
|
-
|
|
27
|
-
PAGES = [
|
|
28
|
-
# (source md, output html, page title, active-key, toc)
|
|
29
|
-
("index.md", "index.html", "Home", "active-home", False),
|
|
30
|
-
("workflow.md", "workflow.html", "Get Started", "active-workflow", True),
|
|
31
|
-
("commands.md", "commands.html", "Commands", "active-commands", True),
|
|
32
|
-
("configuration.md", "configuration.html", "Configuration", "active-configuration", True),
|
|
33
|
-
("troubleshooting.md","troubleshooting.html","Troubleshooting","active-troubleshooting",True),
|
|
34
|
-
]
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def get_version() -> str:
|
|
38
|
-
pkg = PROJECT / "package.json"
|
|
39
|
-
if pkg.exists():
|
|
40
|
-
return json.loads(pkg.read_text())["version"]
|
|
41
|
-
return ""
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def build_page(md_name, html_name, title, active_key, use_toc, version):
|
|
45
|
-
src = DOCS / md_name
|
|
46
|
-
dst = SITE / html_name
|
|
47
|
-
|
|
48
|
-
cmd = [
|
|
49
|
-
"pandoc", str(src),
|
|
50
|
-
"--template", str(TEMPLATE),
|
|
51
|
-
"--to", "html5",
|
|
52
|
-
"--from", "markdown+smart+definition_lists",
|
|
53
|
-
"--highlight-style", "pygments",
|
|
54
|
-
"--lua-filter", str(LUA_FILTER),
|
|
55
|
-
"--metadata", f"title={title}",
|
|
56
|
-
"--metadata", f"pagetitle={title}",
|
|
57
|
-
"--metadata", f"version={version}",
|
|
58
|
-
"--metadata", f"{active_key}=true",
|
|
59
|
-
"--output", str(dst),
|
|
60
|
-
]
|
|
61
|
-
|
|
62
|
-
if use_toc:
|
|
63
|
-
cmd += ["--toc", "--toc-depth=3"]
|
|
64
|
-
|
|
65
|
-
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
66
|
-
if result.returncode != 0:
|
|
67
|
-
print(f" ERROR: {md_name}")
|
|
68
|
-
print(result.stderr)
|
|
69
|
-
return False
|
|
70
|
-
|
|
71
|
-
print(f" {html_name}")
|
|
72
|
-
return True
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
def build(deploy=False, serve=False):
|
|
76
|
-
if SITE.exists():
|
|
77
|
-
shutil.rmtree(SITE)
|
|
78
|
-
SITE.mkdir()
|
|
79
|
-
assets = SITE / "assets"
|
|
80
|
-
assets.mkdir()
|
|
81
|
-
|
|
82
|
-
shutil.copy(EXTRA_CSS, assets / "extra.css")
|
|
83
|
-
|
|
84
|
-
version = get_version()
|
|
85
|
-
print(f"Building docrev {version} → site/")
|
|
86
|
-
|
|
87
|
-
ok = all(build_page(*p, version) for p in PAGES)
|
|
88
|
-
|
|
89
|
-
if not ok:
|
|
90
|
-
sys.exit(1)
|
|
91
|
-
|
|
92
|
-
print("Done.")
|
|
93
|
-
|
|
94
|
-
if serve:
|
|
95
|
-
webbrowser.open(str(SITE / "index.html"))
|
|
96
|
-
|
|
97
|
-
if deploy:
|
|
98
|
-
print("\nDeploying to gh-pages …")
|
|
99
|
-
result = subprocess.run(
|
|
100
|
-
["python", "-m", "ghp_import", "-n", "-p", "-f", str(SITE)],
|
|
101
|
-
cwd=PROJECT,
|
|
102
|
-
)
|
|
103
|
-
if result.returncode != 0:
|
|
104
|
-
sys.exit(result.returncode)
|
|
105
|
-
print("Deployed.")
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
if __name__ == "__main__":
|
|
109
|
-
parser = argparse.ArgumentParser()
|
|
110
|
-
parser.add_argument("--serve", action="store_true", help="Open index.html after build")
|
|
111
|
-
parser.add_argument("--deploy", action="store_true", help="Push site/ to gh-pages")
|
|
112
|
-
args = parser.parse_args()
|
|
113
|
-
build(deploy=args.deploy, serve=args.serve)
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Build the docrev documentation site using pandoc + Bootstrap 5 Sandstone.
|
|
4
|
+
|
|
5
|
+
Usage (from project root):
|
|
6
|
+
python docs-src/build.py # build to site/
|
|
7
|
+
python docs-src/build.py --serve # build + open index.html
|
|
8
|
+
python docs-src/build.py --deploy # build + push to gh-pages
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import argparse
|
|
12
|
+
import json
|
|
13
|
+
import shutil
|
|
14
|
+
import subprocess
|
|
15
|
+
import sys
|
|
16
|
+
import webbrowser
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
19
|
+
HERE = Path(__file__).parent # docs-src/
|
|
20
|
+
PROJECT = HERE.parent # project root
|
|
21
|
+
DOCS = PROJECT / "docs"
|
|
22
|
+
SITE = PROJECT / "site"
|
|
23
|
+
TEMPLATE = HERE / "template.html"
|
|
24
|
+
EXTRA_CSS = HERE / "extra.css"
|
|
25
|
+
LUA_FILTER = HERE / "md-to-html.lua"
|
|
26
|
+
|
|
27
|
+
PAGES = [
|
|
28
|
+
# (source md, output html, page title, active-key, toc)
|
|
29
|
+
("index.md", "index.html", "Home", "active-home", False),
|
|
30
|
+
("workflow.md", "workflow.html", "Get Started", "active-workflow", True),
|
|
31
|
+
("commands.md", "commands.html", "Commands", "active-commands", True),
|
|
32
|
+
("configuration.md", "configuration.html", "Configuration", "active-configuration", True),
|
|
33
|
+
("troubleshooting.md","troubleshooting.html","Troubleshooting","active-troubleshooting",True),
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def get_version() -> str:
|
|
38
|
+
pkg = PROJECT / "package.json"
|
|
39
|
+
if pkg.exists():
|
|
40
|
+
return json.loads(pkg.read_text())["version"]
|
|
41
|
+
return ""
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def build_page(md_name, html_name, title, active_key, use_toc, version):
|
|
45
|
+
src = DOCS / md_name
|
|
46
|
+
dst = SITE / html_name
|
|
47
|
+
|
|
48
|
+
cmd = [
|
|
49
|
+
"pandoc", str(src),
|
|
50
|
+
"--template", str(TEMPLATE),
|
|
51
|
+
"--to", "html5",
|
|
52
|
+
"--from", "markdown+smart+definition_lists",
|
|
53
|
+
"--highlight-style", "pygments",
|
|
54
|
+
"--lua-filter", str(LUA_FILTER),
|
|
55
|
+
"--metadata", f"title={title}",
|
|
56
|
+
"--metadata", f"pagetitle={title}",
|
|
57
|
+
"--metadata", f"version={version}",
|
|
58
|
+
"--metadata", f"{active_key}=true",
|
|
59
|
+
"--output", str(dst),
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
if use_toc:
|
|
63
|
+
cmd += ["--toc", "--toc-depth=3"]
|
|
64
|
+
|
|
65
|
+
result = subprocess.run(cmd, capture_output=True, text=True)
|
|
66
|
+
if result.returncode != 0:
|
|
67
|
+
print(f" ERROR: {md_name}")
|
|
68
|
+
print(result.stderr)
|
|
69
|
+
return False
|
|
70
|
+
|
|
71
|
+
print(f" {html_name}")
|
|
72
|
+
return True
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def build(deploy=False, serve=False):
|
|
76
|
+
if SITE.exists():
|
|
77
|
+
shutil.rmtree(SITE)
|
|
78
|
+
SITE.mkdir()
|
|
79
|
+
assets = SITE / "assets"
|
|
80
|
+
assets.mkdir()
|
|
81
|
+
|
|
82
|
+
shutil.copy(EXTRA_CSS, assets / "extra.css")
|
|
83
|
+
|
|
84
|
+
version = get_version()
|
|
85
|
+
print(f"Building docrev {version} → site/")
|
|
86
|
+
|
|
87
|
+
ok = all(build_page(*p, version) for p in PAGES)
|
|
88
|
+
|
|
89
|
+
if not ok:
|
|
90
|
+
sys.exit(1)
|
|
91
|
+
|
|
92
|
+
print("Done.")
|
|
93
|
+
|
|
94
|
+
if serve:
|
|
95
|
+
webbrowser.open(str(SITE / "index.html"))
|
|
96
|
+
|
|
97
|
+
if deploy:
|
|
98
|
+
print("\nDeploying to gh-pages …")
|
|
99
|
+
result = subprocess.run(
|
|
100
|
+
["python", "-m", "ghp_import", "-n", "-p", "-f", str(SITE)],
|
|
101
|
+
cwd=PROJECT,
|
|
102
|
+
)
|
|
103
|
+
if result.returncode != 0:
|
|
104
|
+
sys.exit(result.returncode)
|
|
105
|
+
print("Deployed.")
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
if __name__ == "__main__":
|
|
109
|
+
parser = argparse.ArgumentParser()
|
|
110
|
+
parser.add_argument("--serve", action="store_true", help="Open index.html after build")
|
|
111
|
+
parser.add_argument("--deploy", action="store_true", help="Push site/ to gh-pages")
|
|
112
|
+
args = parser.parse_args()
|
|
113
|
+
build(deploy=args.deploy, serve=args.serve)
|
package/docs-src/extra.css
CHANGED
|
@@ -1,208 +1,208 @@
|
|
|
1
|
-
/* ── Base ──────────────────────────────────────────────── */
|
|
2
|
-
html, body {
|
|
3
|
-
height: 100%;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
body {
|
|
7
|
-
background-color: #F5F6F8;
|
|
8
|
-
color: #3E3F3A;
|
|
9
|
-
display: flex;
|
|
10
|
-
flex-direction: column;
|
|
11
|
-
min-height: 100vh;
|
|
12
|
-
padding-top: 4rem;
|
|
13
|
-
font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.container { flex: 1; }
|
|
17
|
-
footer { margin-top: auto; }
|
|
18
|
-
|
|
19
|
-
/* ── Navbar (pkgdown-style subtle tint, not bg-primary) ── */
|
|
20
|
-
.navbar {
|
|
21
|
-
background: color-mix(in oklab, color-mix(in oklab, var(--bs-body-bg) 95%, var(--bs-primary)) 95%, var(--bs-body-color));
|
|
22
|
-
border-bottom: 1px solid #DFD7CA;
|
|
23
|
-
line-height: initial;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.navbar .nav-link.active {
|
|
27
|
-
font-weight: 600;
|
|
28
|
-
color: var(--bs-primary) !important;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/* ── Links ─────────────────────────────────────────────── */
|
|
32
|
-
a { color: #325D88; }
|
|
33
|
-
a:hover { color: #1E3D5C; }
|
|
34
|
-
|
|
35
|
-
/* ── Headings ──────────────────────────────────────────── */
|
|
36
|
-
h1 { font-size: 2rem; font-weight: 600; margin-bottom: 1rem; }
|
|
37
|
-
h2 {
|
|
38
|
-
font-size: 1.4rem; font-weight: 600;
|
|
39
|
-
margin-top: 2rem; margin-bottom: .65rem;
|
|
40
|
-
padding-bottom: .3rem;
|
|
41
|
-
border-bottom: 1px solid #DFD7CA;
|
|
42
|
-
}
|
|
43
|
-
h3 { font-size: 1.1rem; font-weight: 600; margin-top: 1.5rem; }
|
|
44
|
-
h4 { font-size: 1rem; font-weight: 600; margin-top: 1.2rem; }
|
|
45
|
-
|
|
46
|
-
/* ── Code ──────────────────────────────────────────────── */
|
|
47
|
-
pre, div.sourceCode {
|
|
48
|
-
background-color: #EEEEED;
|
|
49
|
-
border: 1px solid #DFD7CA;
|
|
50
|
-
border-radius: .375rem;
|
|
51
|
-
padding: .9rem 1.1rem;
|
|
52
|
-
font-size: .85rem;
|
|
53
|
-
overflow-x: auto;
|
|
54
|
-
margin: 1em 0;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
code {
|
|
58
|
-
background-color: #EEEEED;
|
|
59
|
-
color: #3E3F3A;
|
|
60
|
-
border-radius: .25rem;
|
|
61
|
-
padding: .1em .35em;
|
|
62
|
-
font-size: .875em;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
pre code, div.sourceCode code {
|
|
66
|
-
background: none;
|
|
67
|
-
padding: 0;
|
|
68
|
-
border-radius: 0;
|
|
69
|
-
font-size: inherit;
|
|
70
|
-
color: inherit;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
div.sourceCode { padding: 0; }
|
|
74
|
-
div.sourceCode pre { border: none; margin: 0; }
|
|
75
|
-
|
|
76
|
-
/* ── Tables ────────────────────────────────────────────── */
|
|
77
|
-
table {
|
|
78
|
-
width: 100%;
|
|
79
|
-
border-collapse: collapse;
|
|
80
|
-
margin: 1em 0;
|
|
81
|
-
font-size: .9rem;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
thead th {
|
|
85
|
-
background-color: #DFD7CA;
|
|
86
|
-
color: #3E3F3A;
|
|
87
|
-
font-weight: 600;
|
|
88
|
-
padding: .5rem .75rem;
|
|
89
|
-
border-bottom: 2px solid #c8c0b4;
|
|
90
|
-
text-align: left;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
td, th { padding: .4rem .75rem; border-bottom: 1px solid #e8e2d8; }
|
|
94
|
-
tbody tr:hover { background-color: rgba(223,215,202,.2); }
|
|
95
|
-
|
|
96
|
-
/* ── TOC sidebar ───────────────────────────────────────── */
|
|
97
|
-
aside#toc, aside .toc, aside nav.toc { font-size: .875rem; }
|
|
98
|
-
|
|
99
|
-
aside h2.h6 {
|
|
100
|
-
text-transform: uppercase;
|
|
101
|
-
font-size: .68rem;
|
|
102
|
-
letter-spacing: .07em;
|
|
103
|
-
color: #6c757d;
|
|
104
|
-
font-weight: 600;
|
|
105
|
-
margin-bottom: .5rem;
|
|
106
|
-
border: none;
|
|
107
|
-
padding: 0;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
aside .toc, aside #TOC {
|
|
111
|
-
position: sticky;
|
|
112
|
-
top: 5rem;
|
|
113
|
-
max-height: calc(100vh - 6rem);
|
|
114
|
-
overflow-y: auto;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
aside ul {
|
|
118
|
-
list-style: none;
|
|
119
|
-
padding-left: .9rem;
|
|
120
|
-
margin: 0;
|
|
121
|
-
}
|
|
122
|
-
aside > nav > .toc > ul,
|
|
123
|
-
aside .toc > ul { padding-left: 0; }
|
|
124
|
-
|
|
125
|
-
aside li { margin: .1rem 0; }
|
|
126
|
-
|
|
127
|
-
aside a {
|
|
128
|
-
color: #6c757d;
|
|
129
|
-
text-decoration: none;
|
|
130
|
-
display: block;
|
|
131
|
-
line-height: 1.55;
|
|
132
|
-
}
|
|
133
|
-
aside a:hover { color: #325D88; }
|
|
134
|
-
|
|
135
|
-
/* ── Home page cards ───────────────────────────────────── */
|
|
136
|
-
.doc-card {
|
|
137
|
-
border: 1px solid #DFD7CA;
|
|
138
|
-
border-radius: .375rem;
|
|
139
|
-
padding: 1.1rem 1.25rem;
|
|
140
|
-
height: 100%;
|
|
141
|
-
background: #fff;
|
|
142
|
-
transition: border-color .15s, box-shadow .15s;
|
|
143
|
-
}
|
|
144
|
-
.doc-card:hover {
|
|
145
|
-
border-color: #325D88;
|
|
146
|
-
box-shadow: 0 2px 8px rgba(50,93,136,.1);
|
|
147
|
-
}
|
|
148
|
-
.doc-card h5 { font-size: 1rem; font-weight: 600; margin-bottom: .4rem; }
|
|
149
|
-
.doc-card p { font-size: .875rem; color: #6c757d; margin-bottom: .6rem; }
|
|
150
|
-
.doc-card a.stretched-link::after { z-index: 1; }
|
|
151
|
-
|
|
152
|
-
/* ── Badges row ────────────────────────────────────────── */
|
|
153
|
-
.badge-row { margin-bottom: 1rem; line-height: 2; }
|
|
154
|
-
.badge-row img { margin-right: .25rem; }
|
|
155
|
-
|
|
156
|
-
/* ── ── ── DARK MODE ── ── ── ──────────────────────────── */
|
|
157
|
-
|
|
158
|
-
[data-bs-theme="dark"] body { background-color: #343739; color: #DFD7CA; }
|
|
159
|
-
|
|
160
|
-
[data-bs-theme="dark"] .navbar {
|
|
161
|
-
background: color-mix(in oklab, color-mix(in oklab, #343739 92%, var(--bs-primary)) 95%, #DFD7CA);
|
|
162
|
-
border-bottom-color: #495057;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
[data-bs-theme="dark"] a { color: #7ba8d0; }
|
|
166
|
-
[data-bs-theme="dark"] a:hover { color: #a5c4e8; }
|
|
167
|
-
|
|
168
|
-
[data-bs-theme="dark"] .navbar .nav-link.active { color: #7ba8d0 !important; }
|
|
169
|
-
|
|
170
|
-
[data-bs-theme="dark"] h1,
|
|
171
|
-
[data-bs-theme="dark"] h2,
|
|
172
|
-
[data-bs-theme="dark"] h3,
|
|
173
|
-
[data-bs-theme="dark"] h4 { color: #DFD7CA; }
|
|
174
|
-
|
|
175
|
-
[data-bs-theme="dark"] h2 { border-color: #495057; }
|
|
176
|
-
|
|
177
|
-
[data-bs-theme="dark"] pre,
|
|
178
|
-
[data-bs-theme="dark"] div.sourceCode {
|
|
179
|
-
background-color: #2C2F31;
|
|
180
|
-
border-color: #495057;
|
|
181
|
-
color: #DFD7CA;
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
[data-bs-theme="dark"] code {
|
|
185
|
-
background-color: #2C2F31;
|
|
186
|
-
color: #DFD7CA;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
[data-bs-theme="dark"] div.sourceCode span[class] { color: #DFD7CA !important; }
|
|
190
|
-
|
|
191
|
-
[data-bs-theme="dark"] thead th {
|
|
192
|
-
background-color: #3d4043;
|
|
193
|
-
color: #DFD7CA;
|
|
194
|
-
border-color: #495057;
|
|
195
|
-
}
|
|
196
|
-
[data-bs-theme="dark"] td,
|
|
197
|
-
[data-bs-theme="dark"] th { border-color: #3d4043; }
|
|
198
|
-
[data-bs-theme="dark"] tbody tr:hover { background-color: rgba(73,80,87,.3); }
|
|
199
|
-
|
|
200
|
-
[data-bs-theme="dark"] aside a { color: #8e9499; }
|
|
201
|
-
[data-bs-theme="dark"] aside a:hover { color: #7ba8d0; }
|
|
202
|
-
|
|
203
|
-
[data-bs-theme="dark"] .doc-card {
|
|
204
|
-
background: #2C2F31;
|
|
205
|
-
border-color: #495057;
|
|
206
|
-
}
|
|
207
|
-
[data-bs-theme="dark"] .doc-card:hover { border-color: #7ba8d0; }
|
|
208
|
-
[data-bs-theme="dark"] .doc-card p { color: #8e9499; }
|
|
1
|
+
/* ── Base ──────────────────────────────────────────────── */
|
|
2
|
+
html, body {
|
|
3
|
+
height: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
body {
|
|
7
|
+
background-color: #F5F6F8;
|
|
8
|
+
color: #3E3F3A;
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
min-height: 100vh;
|
|
12
|
+
padding-top: 4rem;
|
|
13
|
+
font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.container { flex: 1; }
|
|
17
|
+
footer { margin-top: auto; }
|
|
18
|
+
|
|
19
|
+
/* ── Navbar (pkgdown-style subtle tint, not bg-primary) ── */
|
|
20
|
+
.navbar {
|
|
21
|
+
background: color-mix(in oklab, color-mix(in oklab, var(--bs-body-bg) 95%, var(--bs-primary)) 95%, var(--bs-body-color));
|
|
22
|
+
border-bottom: 1px solid #DFD7CA;
|
|
23
|
+
line-height: initial;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.navbar .nav-link.active {
|
|
27
|
+
font-weight: 600;
|
|
28
|
+
color: var(--bs-primary) !important;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* ── Links ─────────────────────────────────────────────── */
|
|
32
|
+
a { color: #325D88; }
|
|
33
|
+
a:hover { color: #1E3D5C; }
|
|
34
|
+
|
|
35
|
+
/* ── Headings ──────────────────────────────────────────── */
|
|
36
|
+
h1 { font-size: 2rem; font-weight: 600; margin-bottom: 1rem; }
|
|
37
|
+
h2 {
|
|
38
|
+
font-size: 1.4rem; font-weight: 600;
|
|
39
|
+
margin-top: 2rem; margin-bottom: .65rem;
|
|
40
|
+
padding-bottom: .3rem;
|
|
41
|
+
border-bottom: 1px solid #DFD7CA;
|
|
42
|
+
}
|
|
43
|
+
h3 { font-size: 1.1rem; font-weight: 600; margin-top: 1.5rem; }
|
|
44
|
+
h4 { font-size: 1rem; font-weight: 600; margin-top: 1.2rem; }
|
|
45
|
+
|
|
46
|
+
/* ── Code ──────────────────────────────────────────────── */
|
|
47
|
+
pre, div.sourceCode {
|
|
48
|
+
background-color: #EEEEED;
|
|
49
|
+
border: 1px solid #DFD7CA;
|
|
50
|
+
border-radius: .375rem;
|
|
51
|
+
padding: .9rem 1.1rem;
|
|
52
|
+
font-size: .85rem;
|
|
53
|
+
overflow-x: auto;
|
|
54
|
+
margin: 1em 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
code {
|
|
58
|
+
background-color: #EEEEED;
|
|
59
|
+
color: #3E3F3A;
|
|
60
|
+
border-radius: .25rem;
|
|
61
|
+
padding: .1em .35em;
|
|
62
|
+
font-size: .875em;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
pre code, div.sourceCode code {
|
|
66
|
+
background: none;
|
|
67
|
+
padding: 0;
|
|
68
|
+
border-radius: 0;
|
|
69
|
+
font-size: inherit;
|
|
70
|
+
color: inherit;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
div.sourceCode { padding: 0; }
|
|
74
|
+
div.sourceCode pre { border: none; margin: 0; }
|
|
75
|
+
|
|
76
|
+
/* ── Tables ────────────────────────────────────────────── */
|
|
77
|
+
table {
|
|
78
|
+
width: 100%;
|
|
79
|
+
border-collapse: collapse;
|
|
80
|
+
margin: 1em 0;
|
|
81
|
+
font-size: .9rem;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
thead th {
|
|
85
|
+
background-color: #DFD7CA;
|
|
86
|
+
color: #3E3F3A;
|
|
87
|
+
font-weight: 600;
|
|
88
|
+
padding: .5rem .75rem;
|
|
89
|
+
border-bottom: 2px solid #c8c0b4;
|
|
90
|
+
text-align: left;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
td, th { padding: .4rem .75rem; border-bottom: 1px solid #e8e2d8; }
|
|
94
|
+
tbody tr:hover { background-color: rgba(223,215,202,.2); }
|
|
95
|
+
|
|
96
|
+
/* ── TOC sidebar ───────────────────────────────────────── */
|
|
97
|
+
aside#toc, aside .toc, aside nav.toc { font-size: .875rem; }
|
|
98
|
+
|
|
99
|
+
aside h2.h6 {
|
|
100
|
+
text-transform: uppercase;
|
|
101
|
+
font-size: .68rem;
|
|
102
|
+
letter-spacing: .07em;
|
|
103
|
+
color: #6c757d;
|
|
104
|
+
font-weight: 600;
|
|
105
|
+
margin-bottom: .5rem;
|
|
106
|
+
border: none;
|
|
107
|
+
padding: 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
aside .toc, aside #TOC {
|
|
111
|
+
position: sticky;
|
|
112
|
+
top: 5rem;
|
|
113
|
+
max-height: calc(100vh - 6rem);
|
|
114
|
+
overflow-y: auto;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
aside ul {
|
|
118
|
+
list-style: none;
|
|
119
|
+
padding-left: .9rem;
|
|
120
|
+
margin: 0;
|
|
121
|
+
}
|
|
122
|
+
aside > nav > .toc > ul,
|
|
123
|
+
aside .toc > ul { padding-left: 0; }
|
|
124
|
+
|
|
125
|
+
aside li { margin: .1rem 0; }
|
|
126
|
+
|
|
127
|
+
aside a {
|
|
128
|
+
color: #6c757d;
|
|
129
|
+
text-decoration: none;
|
|
130
|
+
display: block;
|
|
131
|
+
line-height: 1.55;
|
|
132
|
+
}
|
|
133
|
+
aside a:hover { color: #325D88; }
|
|
134
|
+
|
|
135
|
+
/* ── Home page cards ───────────────────────────────────── */
|
|
136
|
+
.doc-card {
|
|
137
|
+
border: 1px solid #DFD7CA;
|
|
138
|
+
border-radius: .375rem;
|
|
139
|
+
padding: 1.1rem 1.25rem;
|
|
140
|
+
height: 100%;
|
|
141
|
+
background: #fff;
|
|
142
|
+
transition: border-color .15s, box-shadow .15s;
|
|
143
|
+
}
|
|
144
|
+
.doc-card:hover {
|
|
145
|
+
border-color: #325D88;
|
|
146
|
+
box-shadow: 0 2px 8px rgba(50,93,136,.1);
|
|
147
|
+
}
|
|
148
|
+
.doc-card h5 { font-size: 1rem; font-weight: 600; margin-bottom: .4rem; }
|
|
149
|
+
.doc-card p { font-size: .875rem; color: #6c757d; margin-bottom: .6rem; }
|
|
150
|
+
.doc-card a.stretched-link::after { z-index: 1; }
|
|
151
|
+
|
|
152
|
+
/* ── Badges row ────────────────────────────────────────── */
|
|
153
|
+
.badge-row { margin-bottom: 1rem; line-height: 2; }
|
|
154
|
+
.badge-row img { margin-right: .25rem; }
|
|
155
|
+
|
|
156
|
+
/* ── ── ── DARK MODE ── ── ── ──────────────────────────── */
|
|
157
|
+
|
|
158
|
+
[data-bs-theme="dark"] body { background-color: #343739; color: #DFD7CA; }
|
|
159
|
+
|
|
160
|
+
[data-bs-theme="dark"] .navbar {
|
|
161
|
+
background: color-mix(in oklab, color-mix(in oklab, #343739 92%, var(--bs-primary)) 95%, #DFD7CA);
|
|
162
|
+
border-bottom-color: #495057;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
[data-bs-theme="dark"] a { color: #7ba8d0; }
|
|
166
|
+
[data-bs-theme="dark"] a:hover { color: #a5c4e8; }
|
|
167
|
+
|
|
168
|
+
[data-bs-theme="dark"] .navbar .nav-link.active { color: #7ba8d0 !important; }
|
|
169
|
+
|
|
170
|
+
[data-bs-theme="dark"] h1,
|
|
171
|
+
[data-bs-theme="dark"] h2,
|
|
172
|
+
[data-bs-theme="dark"] h3,
|
|
173
|
+
[data-bs-theme="dark"] h4 { color: #DFD7CA; }
|
|
174
|
+
|
|
175
|
+
[data-bs-theme="dark"] h2 { border-color: #495057; }
|
|
176
|
+
|
|
177
|
+
[data-bs-theme="dark"] pre,
|
|
178
|
+
[data-bs-theme="dark"] div.sourceCode {
|
|
179
|
+
background-color: #2C2F31;
|
|
180
|
+
border-color: #495057;
|
|
181
|
+
color: #DFD7CA;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
[data-bs-theme="dark"] code {
|
|
185
|
+
background-color: #2C2F31;
|
|
186
|
+
color: #DFD7CA;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
[data-bs-theme="dark"] div.sourceCode span[class] { color: #DFD7CA !important; }
|
|
190
|
+
|
|
191
|
+
[data-bs-theme="dark"] thead th {
|
|
192
|
+
background-color: #3d4043;
|
|
193
|
+
color: #DFD7CA;
|
|
194
|
+
border-color: #495057;
|
|
195
|
+
}
|
|
196
|
+
[data-bs-theme="dark"] td,
|
|
197
|
+
[data-bs-theme="dark"] th { border-color: #3d4043; }
|
|
198
|
+
[data-bs-theme="dark"] tbody tr:hover { background-color: rgba(73,80,87,.3); }
|
|
199
|
+
|
|
200
|
+
[data-bs-theme="dark"] aside a { color: #8e9499; }
|
|
201
|
+
[data-bs-theme="dark"] aside a:hover { color: #7ba8d0; }
|
|
202
|
+
|
|
203
|
+
[data-bs-theme="dark"] .doc-card {
|
|
204
|
+
background: #2C2F31;
|
|
205
|
+
border-color: #495057;
|
|
206
|
+
}
|
|
207
|
+
[data-bs-theme="dark"] .doc-card:hover { border-color: #7ba8d0; }
|
|
208
|
+
[data-bs-theme="dark"] .doc-card p { color: #8e9499; }
|
package/docs-src/md-to-html.lua
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
-- Rewrite .md links to .html in pandoc output
|
|
2
|
-
function Link(el)
|
|
3
|
-
el.target = el.target:gsub("%.md$", ".html")
|
|
4
|
-
el.target = el.target:gsub("%.md#", ".html#")
|
|
5
|
-
return el
|
|
6
|
-
end
|
|
1
|
+
-- Rewrite .md links to .html in pandoc output
|
|
2
|
+
function Link(el)
|
|
3
|
+
el.target = el.target:gsub("%.md$", ".html")
|
|
4
|
+
el.target = el.target:gsub("%.md#", ".html#")
|
|
5
|
+
return el
|
|
6
|
+
end
|