quackage 1.2.3 → 1.2.5
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/README.md +2 -0
- package/docs/_brand.json +18 -0
- package/docs/index.html +0 -2
- package/docs/retold-catalog.json +175 -232
- package/docs/retold-keyword-index.json +5288 -4179
- package/package.json +5 -5
- package/source/commands/Quackage-Command-PrepareDocs.js +76 -12
- package/source/services/Quackage-ExampleService.js +3 -3
- package/docs/css/docuserve.css +0 -327
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "quackage",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.5",
|
|
4
4
|
"description": "Building. Testing. Quacking. Reloading.",
|
|
5
5
|
"main": "source/Quackage-CLIProgram.js",
|
|
6
6
|
"scripts": {
|
|
@@ -60,14 +60,14 @@
|
|
|
60
60
|
"gulp-env": "^0.4.0",
|
|
61
61
|
"gulp-sourcemaps": "^3.0.0",
|
|
62
62
|
"gulp-terser": "^2.1.0",
|
|
63
|
-
"indoctrinate": "^1.0.
|
|
63
|
+
"indoctrinate": "^1.0.12",
|
|
64
64
|
"jsdoc": "^4.0.5",
|
|
65
65
|
"mocha": "10.4.0",
|
|
66
66
|
"npm-check-updates": "^18.0.1",
|
|
67
67
|
"nyc": "^15.1.0",
|
|
68
|
-
"pict-provider-theme": "^
|
|
68
|
+
"pict-provider-theme": "^1.0.1",
|
|
69
69
|
"pict-service-commandlineutility": "^1.0.19",
|
|
70
|
-
"retold-harness": "^1.1.
|
|
70
|
+
"retold-harness": "^1.1.12",
|
|
71
71
|
"vinyl-buffer": "^1.0.1",
|
|
72
72
|
"vinyl-source-stream": "^2.0.0"
|
|
73
73
|
},
|
|
@@ -77,6 +77,6 @@
|
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"pict-docuserve": "^
|
|
80
|
+
"pict-docuserve": "^1.4.1"
|
|
81
81
|
}
|
|
82
82
|
}
|
|
@@ -18,6 +18,7 @@ class QuackageCommandPrepareDocs extends libCommandLineCommand
|
|
|
18
18
|
this.options.CommandOptions.push({ Name: '-b, --branch [branch]', Description: 'Git branch for GitHub raw URLs (defaults to master).', Default: 'master' });
|
|
19
19
|
this.options.CommandOptions.push({ Name: '-g, --github_org [github_org]', Description: 'GitHub organization for raw URLs (defaults to stevenvelozo).', Default: 'stevenvelozo' });
|
|
20
20
|
this.options.CommandOptions.push({ Name: '-x, --excluded_modules [excluded_modules]', Description: 'Comma-separated list of module names to exclude from the catalog and keyword index. Merged with any ExcludedModules list in indoctrinate\'s loaded config file (e.g. .indoctrinate.config.json).', Default: '' });
|
|
21
|
+
this.options.CommandOptions.push({ Name: '--docs_mode [docs_mode]', Description: 'Documentation scan mode: "module" (one module\'s docs/) or "ecosystem" (a folder of <group>/<module> repos). Auto-detected when omitted — "module" when the scan root has a package.json, else "ecosystem".', Default: '' });
|
|
21
22
|
|
|
22
23
|
this.options.Aliases.push('docs');
|
|
23
24
|
this.options.Aliases.push('prep-docs');
|
|
@@ -77,13 +78,76 @@ class QuackageCommandPrepareDocs extends libCommandLineCommand
|
|
|
77
78
|
tmpExtraScanArgs = ['-e', tmpDocsContentRoot];
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
// Documentation mode: "module" (a single module's docs/) vs
|
|
82
|
+
// "ecosystem" (a folder of <group>/<module> repos). Auto-detected
|
|
83
|
+
// from whether the scan root is itself a package (has package.json);
|
|
84
|
+
// the --docs_mode option overrides.
|
|
85
|
+
let tmpDocsMode = (this.CommandOptions.docs_mode === 'module' || this.CommandOptions.docs_mode === 'ecosystem')
|
|
86
|
+
? this.CommandOptions.docs_mode
|
|
87
|
+
: (libFS.existsSync(libPath.join(tmpResolvedDirectoryRoot, 'package.json')) ? 'module' : 'ecosystem');
|
|
88
|
+
this.log.info(`Documentation mode: [${tmpDocsMode}] (scan root [${tmpResolvedDirectoryRoot}]).`);
|
|
89
|
+
|
|
90
|
+
// In single-module mode the catalog + keyword index describe one
|
|
91
|
+
// module — pass --single_module to indoctrinate. The docs folder is
|
|
92
|
+
// already inside the scanned module root, so the -e extra scan is
|
|
93
|
+
// redundant there (and its content would lack the docs/ path segment).
|
|
94
|
+
let tmpSingleModuleArgs = [];
|
|
95
|
+
if (tmpDocsMode === 'module')
|
|
96
|
+
{
|
|
97
|
+
tmpSingleModuleArgs = ['-s'];
|
|
98
|
+
tmpExtraScanArgs = [];
|
|
99
|
+
}
|
|
100
|
+
|
|
80
101
|
let tmpAnticipate = this.fable.newAnticipate();
|
|
81
102
|
|
|
82
|
-
// Step 1:
|
|
103
|
+
// Step 1: Build and stage flagged example applications into the docs
|
|
104
|
+
// folder. Runs first so any generated example index / quick-links
|
|
105
|
+
// markdown is on disk before the keyword index scans it into search.
|
|
106
|
+
// This is a clean no-op for modules with no flagged example
|
|
107
|
+
// applications, so it is safe to run everywhere prepare-docs runs.
|
|
108
|
+
tmpAnticipate.anticipate(
|
|
109
|
+
function (fNext)
|
|
110
|
+
{
|
|
111
|
+
this.log.info(`###############################[ STEP 1: STAGE EXAMPLE APPLICATIONS ]###############################`);
|
|
112
|
+
this.fable.QuackageProcess.execute(
|
|
113
|
+
tmpDocuserveLocation,
|
|
114
|
+
[
|
|
115
|
+
'stage-examples',
|
|
116
|
+
tmpDocsFolder,
|
|
117
|
+
'-m', tmpDirectoryRoot
|
|
118
|
+
],
|
|
119
|
+
{ cwd: this.fable.AppData.CWD },
|
|
120
|
+
fNext
|
|
121
|
+
);
|
|
122
|
+
}.bind(this));
|
|
123
|
+
|
|
124
|
+
// Step 1b: Stage section-playground runtime bundles into the docs
|
|
125
|
+
// folder. Reads docs/_playground.json and copies every Imports[]
|
|
126
|
+
// entry with `Source: "local"` from its resolved UMD bundle into
|
|
127
|
+
// the declared Path (default `playground/runtime/<Name>.min.js`).
|
|
128
|
+
// Clean no-op for modules without a _playground.json — safe to run
|
|
129
|
+
// everywhere.
|
|
130
|
+
tmpAnticipate.anticipate(
|
|
131
|
+
function (fNext)
|
|
132
|
+
{
|
|
133
|
+
this.log.info(`###############################[ STEP 1b: STAGE PLAYGROUND RUNTIME ]###############################`);
|
|
134
|
+
this.fable.QuackageProcess.execute(
|
|
135
|
+
tmpDocuserveLocation,
|
|
136
|
+
[
|
|
137
|
+
'stage-playground',
|
|
138
|
+
tmpDocsFolder,
|
|
139
|
+
'-m', tmpDirectoryRoot
|
|
140
|
+
],
|
|
141
|
+
{ cwd: this.fable.AppData.CWD },
|
|
142
|
+
fNext
|
|
143
|
+
);
|
|
144
|
+
}.bind(this));
|
|
145
|
+
|
|
146
|
+
// Step 2: Generate the documentation catalog
|
|
83
147
|
tmpAnticipate.anticipate(
|
|
84
148
|
function (fNext)
|
|
85
149
|
{
|
|
86
|
-
this.log.info(`###############################[ STEP
|
|
150
|
+
this.log.info(`###############################[ STEP 2: INDOCTRINATE CATALOG ]###############################`);
|
|
87
151
|
this.fable.QuackageProcess.execute(
|
|
88
152
|
tmpIndoctrinateLocation,
|
|
89
153
|
[
|
|
@@ -92,34 +156,34 @@ class QuackageCommandPrepareDocs extends libCommandLineCommand
|
|
|
92
156
|
'-o', tmpCatalogFile,
|
|
93
157
|
'-b', tmpBranch,
|
|
94
158
|
'-g', tmpGitHubOrg
|
|
95
|
-
].concat(tmpExcludedModulesArgs),
|
|
159
|
+
].concat(tmpSingleModuleArgs).concat(tmpExcludedModulesArgs),
|
|
96
160
|
{ cwd: this.fable.AppData.CWD },
|
|
97
161
|
fNext
|
|
98
162
|
);
|
|
99
163
|
}.bind(this));
|
|
100
164
|
|
|
101
|
-
// Step
|
|
165
|
+
// Step 3: Generate the keyword search index
|
|
102
166
|
tmpAnticipate.anticipate(
|
|
103
167
|
function (fNext)
|
|
104
168
|
{
|
|
105
|
-
this.log.info(`###############################[ STEP
|
|
169
|
+
this.log.info(`###############################[ STEP 3: KEYWORD INDEX ]###############################`);
|
|
106
170
|
this.fable.QuackageProcess.execute(
|
|
107
171
|
tmpIndoctrinateLocation,
|
|
108
172
|
[
|
|
109
173
|
'generate_keyword_index',
|
|
110
174
|
'-d', tmpDirectoryRoot,
|
|
111
175
|
'-o', tmpKeywordIndexFile
|
|
112
|
-
].concat(tmpExtraScanArgs).concat(tmpExcludedModulesArgs),
|
|
176
|
+
].concat(tmpSingleModuleArgs).concat(tmpExtraScanArgs).concat(tmpExcludedModulesArgs),
|
|
113
177
|
{ cwd: this.fable.AppData.CWD },
|
|
114
178
|
fNext
|
|
115
179
|
);
|
|
116
180
|
}.bind(this));
|
|
117
181
|
|
|
118
|
-
// Step
|
|
182
|
+
// Step 4: Write _version.json version placard sidecar
|
|
119
183
|
tmpAnticipate.anticipate(
|
|
120
184
|
function (fNext)
|
|
121
185
|
{
|
|
122
|
-
this.log.info(`###############################[ STEP
|
|
186
|
+
this.log.info(`###############################[ STEP 4: VERSION PLACARD ]###############################`);
|
|
123
187
|
try
|
|
124
188
|
{
|
|
125
189
|
let tmpPackageJsonPath = libPath.join(tmpDirectoryRoot, 'package.json');
|
|
@@ -163,11 +227,11 @@ class QuackageCommandPrepareDocs extends libCommandLineCommand
|
|
|
163
227
|
return fNext();
|
|
164
228
|
}.bind(this));
|
|
165
229
|
|
|
166
|
-
// Step
|
|
230
|
+
// Step 5: Inject pict-docuserve assets
|
|
167
231
|
tmpAnticipate.anticipate(
|
|
168
232
|
function (fNext)
|
|
169
233
|
{
|
|
170
|
-
this.log.info(`###############################[ STEP
|
|
234
|
+
this.log.info(`###############################[ STEP 5: DOCUSERVE INJECT ]###############################`);
|
|
171
235
|
this.fable.QuackageProcess.execute(
|
|
172
236
|
tmpDocuserveLocation,
|
|
173
237
|
[
|
|
@@ -179,14 +243,14 @@ class QuackageCommandPrepareDocs extends libCommandLineCommand
|
|
|
179
243
|
);
|
|
180
244
|
}.bind(this));
|
|
181
245
|
|
|
182
|
-
// Step
|
|
246
|
+
// Step 6: Stamp meaningful <title> and <meta name="description">
|
|
183
247
|
// into the freshly-injected index.html so social-card scrapers
|
|
184
248
|
// (Slack, etc.) read the module name + version instead of the
|
|
185
249
|
// generic "powered by pict-docuserve" boilerplate.
|
|
186
250
|
tmpAnticipate.anticipate(
|
|
187
251
|
function (fNext)
|
|
188
252
|
{
|
|
189
|
-
this.log.info(`###############################[ STEP
|
|
253
|
+
this.log.info(`###############################[ STEP 6: STAMP HTML METADATA ]###############################`);
|
|
190
254
|
try
|
|
191
255
|
{
|
|
192
256
|
let tmpIndexPath = libPath.join(tmpDocsFolder, 'index.html');
|
|
@@ -209,8 +209,8 @@ class QuackageExampleService extends libPict.ServiceProviderBase
|
|
|
209
209
|
|
|
210
210
|
/* --- Header Bar --- */
|
|
211
211
|
.pict-example-header { display: flex; align-items: stretch; background: #264653; border-bottom: 3px solid #E76F51; }
|
|
212
|
-
.pict-example-badge { background: #E76F51; color: #fff; padding: 0.6rem 1rem; font-size: 0.7rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; display: flex; align-items: center; gap: 0.5rem; }
|
|
213
|
-
.pict-example-badge svg { width: 14px; height: 14px; fill: #fff; flex-shrink: 0; }
|
|
212
|
+
.pict-example-badge { background: #E76F51; color: var(--theme-color-background-panel, #fff); padding: 0.6rem 1rem; font-size: 0.7rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.1em; display: flex; align-items: center; gap: 0.5rem; }
|
|
213
|
+
.pict-example-badge svg { width: 14px; height: 14px; fill: var(--theme-color-background-panel, #fff); flex-shrink: 0; }
|
|
214
214
|
.pict-example-app-name { padding: 0.6rem 1rem; color: #FAEDCD; font-size: 1.1rem; font-weight: 600; display: flex; align-items: center; }
|
|
215
215
|
.pict-example-module { margin-left: auto; padding: 0.6rem 1rem; color: #D4A373; font-size: 0.75rem; display: flex; align-items: center; letter-spacing: 0.03em; }
|
|
216
216
|
|
|
@@ -221,7 +221,7 @@ class QuackageExampleService extends libPict.ServiceProviderBase
|
|
|
221
221
|
|
|
222
222
|
/* --- Example List --- */
|
|
223
223
|
.example-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 0.5rem; }
|
|
224
|
-
.example-list li { background: #fff; border: 1px solid #D4A373; border-left: 4px solid #E76F51; border-radius: 4px; transition: border-color 0.15s, box-shadow 0.15s; }
|
|
224
|
+
.example-list li { background: var(--theme-color-background-panel, #fff); border: 1px solid #D4A373; border-left: 4px solid #E76F51; border-radius: 4px; transition: border-color 0.15s, box-shadow 0.15s; }
|
|
225
225
|
.example-list li:hover { border-left-color: #264653; box-shadow: 0 2px 8px rgba(38,70,83,0.1); }
|
|
226
226
|
.example-list a { display: block; padding: 0.75rem 1rem; text-decoration: none; color: #264653; font-weight: 500; font-size: 0.95rem; }
|
|
227
227
|
.example-list a:hover { color: #E76F51; }
|
package/docs/css/docuserve.css
DELETED
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
/* ============================================================================
|
|
2
|
-
Pict Docuserve - Base Styles & Theme Variables
|
|
3
|
-
============================================================================ */
|
|
4
|
-
|
|
5
|
-
/* ----------------------------------------------------------------------------
|
|
6
|
-
Theme variables — light defaults on :root.
|
|
7
|
-
Dark mode applies when either:
|
|
8
|
-
(a) the user explicitly selected dark via <html data-theme="dark">
|
|
9
|
-
(b) the user hasn't chosen anything AND the system prefers dark
|
|
10
|
-
An explicit <html data-theme="light"> pins the light palette regardless.
|
|
11
|
-
---------------------------------------------------------------------------- */
|
|
12
|
-
|
|
13
|
-
:root
|
|
14
|
-
{
|
|
15
|
-
/* Surfaces */
|
|
16
|
-
--docuserve-bg: #FDFBF7;
|
|
17
|
-
--docuserve-bg-elevated: #FFFFFF;
|
|
18
|
-
--docuserve-border: #DDD6CA;
|
|
19
|
-
--docuserve-border-soft: #EAE3D8;
|
|
20
|
-
|
|
21
|
-
/* Text */
|
|
22
|
-
--docuserve-text: #2A241E;
|
|
23
|
-
--docuserve-text-strong: #3D3229;
|
|
24
|
-
--docuserve-text-muted: #5E5549;
|
|
25
|
-
--docuserve-text-dim: #8A7F72;
|
|
26
|
-
|
|
27
|
-
/* Accent / links */
|
|
28
|
-
--docuserve-accent: #2E7D74;
|
|
29
|
-
--docuserve-accent-hover: #236660;
|
|
30
|
-
|
|
31
|
-
/* Top bar */
|
|
32
|
-
--docuserve-topbar-bg: #3D3229;
|
|
33
|
-
--docuserve-topbar-text: #E8E0D4;
|
|
34
|
-
--docuserve-topbar-text-muted: #B5AA9A;
|
|
35
|
-
--docuserve-topbar-text-dim: #8A7F72;
|
|
36
|
-
--docuserve-topbar-hover-bg: #524438;
|
|
37
|
-
--docuserve-topbar-version-bg: rgba(255, 255, 255, 0.06);
|
|
38
|
-
--docuserve-topbar-version-border: rgba(255, 255, 255, 0.08);
|
|
39
|
-
--docuserve-topbar-version-text: #B5AA9A;
|
|
40
|
-
|
|
41
|
-
/* Sidebar */
|
|
42
|
-
--docuserve-sidebar-bg: #FAF7F1;
|
|
43
|
-
--docuserve-sidebar-border: #DDD6CA;
|
|
44
|
-
--docuserve-sidebar-border-soft: #E5DED1;
|
|
45
|
-
--docuserve-sidebar-text: #423D37;
|
|
46
|
-
--docuserve-sidebar-group-title: #3D3229;
|
|
47
|
-
--docuserve-sidebar-module-text: #5E5549;
|
|
48
|
-
--docuserve-sidebar-hover-bg: #EAE3D8;
|
|
49
|
-
--docuserve-sidebar-hover-text: #2E7D74;
|
|
50
|
-
--docuserve-sidebar-active-bg: #E5DED1;
|
|
51
|
-
--docuserve-sidebar-active-text: #2E7D74;
|
|
52
|
-
--docuserve-sidebar-search-bg: #FFFFFF;
|
|
53
|
-
--docuserve-sidebar-search-border: #DDD6CA;
|
|
54
|
-
|
|
55
|
-
/* Inline code */
|
|
56
|
-
--docuserve-inline-code-bg: #F0ECE4;
|
|
57
|
-
--docuserve-inline-code-text: #9E3A50;
|
|
58
|
-
|
|
59
|
-
/* Code block panel */
|
|
60
|
-
--docuserve-code-bg: #F6F3EE;
|
|
61
|
-
--docuserve-code-border: #E5DED1;
|
|
62
|
-
--docuserve-code-gutter-bg: #EFEAE0;
|
|
63
|
-
--docuserve-code-gutter-border: #DDD6CA;
|
|
64
|
-
--docuserve-code-gutter-text: #A59986;
|
|
65
|
-
--docuserve-code-text: #2A241E;
|
|
66
|
-
|
|
67
|
-
/* Syntax tokens — low-chroma dark-on-light palette */
|
|
68
|
-
--docuserve-tok-keyword: #A03472;
|
|
69
|
-
--docuserve-tok-string: #1A6640;
|
|
70
|
-
--docuserve-tok-number: #B25A00;
|
|
71
|
-
--docuserve-tok-comment: #8A7F72;
|
|
72
|
-
--docuserve-tok-operator: #2E7D74;
|
|
73
|
-
--docuserve-tok-punctuation: #2A241E;
|
|
74
|
-
--docuserve-tok-function: #2A5DB0;
|
|
75
|
-
--docuserve-tok-property: #9E3A50;
|
|
76
|
-
--docuserve-tok-tag: #9E3A50;
|
|
77
|
-
--docuserve-tok-attr-name: #B25A00;
|
|
78
|
-
--docuserve-tok-attr-value: #1A6640;
|
|
79
|
-
|
|
80
|
-
/* Tables, blockquotes, mermaid */
|
|
81
|
-
--docuserve-table-header-bg: #F5F0E8;
|
|
82
|
-
--docuserve-table-row-alt-bg: #F9F6F0;
|
|
83
|
-
--docuserve-blockquote-bg: #F7F5F0;
|
|
84
|
-
--docuserve-blockquote-border: #2E7D74;
|
|
85
|
-
--docuserve-blockquote-text: #5E5549;
|
|
86
|
-
--docuserve-mermaid-bg: #FFFFFF;
|
|
87
|
-
|
|
88
|
-
/* Scrollbars */
|
|
89
|
-
--docuserve-scrollbar-track: #F5F0E8;
|
|
90
|
-
--docuserve-scrollbar-thumb: #D4CCBE;
|
|
91
|
-
--docuserve-scrollbar-thumb-hover: #B5AA9A;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
@media (prefers-color-scheme: dark)
|
|
95
|
-
{
|
|
96
|
-
:root:not([data-theme="light"])
|
|
97
|
-
{
|
|
98
|
-
--docuserve-bg: #15120F;
|
|
99
|
-
--docuserve-bg-elevated: #1B1814;
|
|
100
|
-
--docuserve-border: #2F2823;
|
|
101
|
-
--docuserve-border-soft: #26211C;
|
|
102
|
-
|
|
103
|
-
--docuserve-text: #E8E0D4;
|
|
104
|
-
--docuserve-text-strong: #F2ECE0;
|
|
105
|
-
--docuserve-text-muted: #B5AA9A;
|
|
106
|
-
--docuserve-text-dim: #7A6F62;
|
|
107
|
-
|
|
108
|
-
--docuserve-accent: #5DB8A8;
|
|
109
|
-
--docuserve-accent-hover: #7FCCB8;
|
|
110
|
-
|
|
111
|
-
--docuserve-topbar-bg: #1A1612;
|
|
112
|
-
--docuserve-topbar-text: #E8E0D4;
|
|
113
|
-
--docuserve-topbar-text-muted: #B5AA9A;
|
|
114
|
-
--docuserve-topbar-text-dim: #7A6F62;
|
|
115
|
-
--docuserve-topbar-hover-bg: #2A241E;
|
|
116
|
-
--docuserve-topbar-version-bg: rgba(255, 255, 255, 0.05);
|
|
117
|
-
--docuserve-topbar-version-border: rgba(255, 255, 255, 0.09);
|
|
118
|
-
--docuserve-topbar-version-text: #B5AA9A;
|
|
119
|
-
|
|
120
|
-
--docuserve-sidebar-bg: #1B1814;
|
|
121
|
-
--docuserve-sidebar-border: #2F2823;
|
|
122
|
-
--docuserve-sidebar-border-soft: #26211C;
|
|
123
|
-
--docuserve-sidebar-text: #C9C0B3;
|
|
124
|
-
--docuserve-sidebar-group-title: #F2ECE0;
|
|
125
|
-
--docuserve-sidebar-module-text: #B5AA9A;
|
|
126
|
-
--docuserve-sidebar-hover-bg: #2A241E;
|
|
127
|
-
--docuserve-sidebar-hover-text: #7FCCB8;
|
|
128
|
-
--docuserve-sidebar-active-bg: #2F2823;
|
|
129
|
-
--docuserve-sidebar-active-text: #7FCCB8;
|
|
130
|
-
--docuserve-sidebar-search-bg: #26211C;
|
|
131
|
-
--docuserve-sidebar-search-border: #2F2823;
|
|
132
|
-
|
|
133
|
-
--docuserve-inline-code-bg: #2A241E;
|
|
134
|
-
--docuserve-inline-code-text: #E8B07A;
|
|
135
|
-
|
|
136
|
-
--docuserve-code-bg: #1E1A17;
|
|
137
|
-
--docuserve-code-border: #2F2823;
|
|
138
|
-
--docuserve-code-gutter-bg: #17130F;
|
|
139
|
-
--docuserve-code-gutter-border: #2F2823;
|
|
140
|
-
--docuserve-code-gutter-text: #6A6052;
|
|
141
|
-
--docuserve-code-text: #E8E0D4;
|
|
142
|
-
|
|
143
|
-
--docuserve-tok-keyword: #C678DD;
|
|
144
|
-
--docuserve-tok-string: #98C379;
|
|
145
|
-
--docuserve-tok-number: #D19A66;
|
|
146
|
-
--docuserve-tok-comment: #7F848E;
|
|
147
|
-
--docuserve-tok-operator: #56B6C2;
|
|
148
|
-
--docuserve-tok-punctuation: #E8E0D4;
|
|
149
|
-
--docuserve-tok-function: #61AFEF;
|
|
150
|
-
--docuserve-tok-property: #E06C75;
|
|
151
|
-
--docuserve-tok-tag: #E06C75;
|
|
152
|
-
--docuserve-tok-attr-name: #D19A66;
|
|
153
|
-
--docuserve-tok-attr-value: #98C379;
|
|
154
|
-
|
|
155
|
-
--docuserve-table-header-bg: #26211C;
|
|
156
|
-
--docuserve-table-row-alt-bg: #1F1B17;
|
|
157
|
-
--docuserve-blockquote-bg: #1F1B17;
|
|
158
|
-
--docuserve-blockquote-border: #5DB8A8;
|
|
159
|
-
--docuserve-blockquote-text: #C9C0B3;
|
|
160
|
-
--docuserve-mermaid-bg: #E8E0D4;
|
|
161
|
-
|
|
162
|
-
--docuserve-scrollbar-track: #1B1814;
|
|
163
|
-
--docuserve-scrollbar-thumb: #3A322B;
|
|
164
|
-
--docuserve-scrollbar-thumb-hover: #524438;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
:root[data-theme="dark"]
|
|
169
|
-
{
|
|
170
|
-
--docuserve-bg: #15120F;
|
|
171
|
-
--docuserve-bg-elevated: #1B1814;
|
|
172
|
-
--docuserve-border: #2F2823;
|
|
173
|
-
--docuserve-border-soft: #26211C;
|
|
174
|
-
|
|
175
|
-
--docuserve-text: #E8E0D4;
|
|
176
|
-
--docuserve-text-strong: #F2ECE0;
|
|
177
|
-
--docuserve-text-muted: #B5AA9A;
|
|
178
|
-
--docuserve-text-dim: #7A6F62;
|
|
179
|
-
|
|
180
|
-
--docuserve-accent: #5DB8A8;
|
|
181
|
-
--docuserve-accent-hover: #7FCCB8;
|
|
182
|
-
|
|
183
|
-
--docuserve-topbar-bg: #1A1612;
|
|
184
|
-
--docuserve-topbar-text: #E8E0D4;
|
|
185
|
-
--docuserve-topbar-text-muted: #B5AA9A;
|
|
186
|
-
--docuserve-topbar-text-dim: #7A6F62;
|
|
187
|
-
--docuserve-topbar-hover-bg: #2A241E;
|
|
188
|
-
--docuserve-topbar-version-bg: rgba(255, 255, 255, 0.05);
|
|
189
|
-
--docuserve-topbar-version-border: rgba(255, 255, 255, 0.09);
|
|
190
|
-
--docuserve-topbar-version-text: #B5AA9A;
|
|
191
|
-
|
|
192
|
-
--docuserve-sidebar-bg: #1B1814;
|
|
193
|
-
--docuserve-sidebar-border: #2F2823;
|
|
194
|
-
--docuserve-sidebar-border-soft: #26211C;
|
|
195
|
-
--docuserve-sidebar-text: #C9C0B3;
|
|
196
|
-
--docuserve-sidebar-group-title: #F2ECE0;
|
|
197
|
-
--docuserve-sidebar-module-text: #B5AA9A;
|
|
198
|
-
--docuserve-sidebar-hover-bg: #2A241E;
|
|
199
|
-
--docuserve-sidebar-hover-text: #7FCCB8;
|
|
200
|
-
--docuserve-sidebar-active-bg: #2F2823;
|
|
201
|
-
--docuserve-sidebar-active-text: #7FCCB8;
|
|
202
|
-
--docuserve-sidebar-search-bg: #26211C;
|
|
203
|
-
--docuserve-sidebar-search-border: #2F2823;
|
|
204
|
-
|
|
205
|
-
--docuserve-inline-code-bg: #2A241E;
|
|
206
|
-
--docuserve-inline-code-text: #E8B07A;
|
|
207
|
-
|
|
208
|
-
--docuserve-code-bg: #1E1A17;
|
|
209
|
-
--docuserve-code-border: #2F2823;
|
|
210
|
-
--docuserve-code-gutter-bg: #17130F;
|
|
211
|
-
--docuserve-code-gutter-border: #2F2823;
|
|
212
|
-
--docuserve-code-gutter-text: #6A6052;
|
|
213
|
-
--docuserve-code-text: #E8E0D4;
|
|
214
|
-
|
|
215
|
-
--docuserve-tok-keyword: #C678DD;
|
|
216
|
-
--docuserve-tok-string: #98C379;
|
|
217
|
-
--docuserve-tok-number: #D19A66;
|
|
218
|
-
--docuserve-tok-comment: #7F848E;
|
|
219
|
-
--docuserve-tok-operator: #56B6C2;
|
|
220
|
-
--docuserve-tok-punctuation: #E8E0D4;
|
|
221
|
-
--docuserve-tok-function: #61AFEF;
|
|
222
|
-
--docuserve-tok-property: #E06C75;
|
|
223
|
-
--docuserve-tok-tag: #E06C75;
|
|
224
|
-
--docuserve-tok-attr-name: #D19A66;
|
|
225
|
-
--docuserve-tok-attr-value: #98C379;
|
|
226
|
-
|
|
227
|
-
--docuserve-table-header-bg: #26211C;
|
|
228
|
-
--docuserve-table-row-alt-bg: #1F1B17;
|
|
229
|
-
--docuserve-blockquote-bg: #1F1B17;
|
|
230
|
-
--docuserve-blockquote-border: #5DB8A8;
|
|
231
|
-
--docuserve-blockquote-text: #C9C0B3;
|
|
232
|
-
--docuserve-mermaid-bg: #E8E0D4;
|
|
233
|
-
|
|
234
|
-
--docuserve-scrollbar-track: #1B1814;
|
|
235
|
-
--docuserve-scrollbar-thumb: #3A322B;
|
|
236
|
-
--docuserve-scrollbar-thumb-hover: #524438;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/* ----------------------------------------------------------------------------
|
|
240
|
-
Reset and base
|
|
241
|
-
---------------------------------------------------------------------------- */
|
|
242
|
-
|
|
243
|
-
*, *::before, *::after
|
|
244
|
-
{
|
|
245
|
-
box-sizing: border-box;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
html, body
|
|
249
|
-
{
|
|
250
|
-
margin: 0;
|
|
251
|
-
padding: 0;
|
|
252
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
253
|
-
font-size: 16px;
|
|
254
|
-
line-height: 1.5;
|
|
255
|
-
color: var(--docuserve-text);
|
|
256
|
-
background-color: var(--docuserve-bg);
|
|
257
|
-
-webkit-font-smoothing: antialiased;
|
|
258
|
-
-moz-osx-font-smoothing: grayscale;
|
|
259
|
-
transition: background-color 0.15s ease, color 0.15s ease;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
/* Typography */
|
|
263
|
-
h1, h2, h3, h4, h5, h6
|
|
264
|
-
{
|
|
265
|
-
margin-top: 0;
|
|
266
|
-
line-height: 1.3;
|
|
267
|
-
color: var(--docuserve-text-strong);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
a
|
|
271
|
-
{
|
|
272
|
-
color: var(--docuserve-accent);
|
|
273
|
-
text-decoration: none;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
a:hover
|
|
277
|
-
{
|
|
278
|
-
color: var(--docuserve-accent-hover);
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
/* Application container */
|
|
282
|
-
#Docuserve-Application-Container
|
|
283
|
-
{
|
|
284
|
-
min-height: 100vh;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/* Utility: scrollbar styling */
|
|
288
|
-
::-webkit-scrollbar
|
|
289
|
-
{
|
|
290
|
-
width: 8px;
|
|
291
|
-
height: 8px;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
::-webkit-scrollbar-track
|
|
295
|
-
{
|
|
296
|
-
background: var(--docuserve-scrollbar-track);
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
::-webkit-scrollbar-thumb
|
|
300
|
-
{
|
|
301
|
-
background: var(--docuserve-scrollbar-thumb);
|
|
302
|
-
border-radius: 4px;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
::-webkit-scrollbar-thumb:hover
|
|
306
|
-
{
|
|
307
|
-
background: var(--docuserve-scrollbar-thumb-hover);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
/* Responsive adjustments */
|
|
311
|
-
@media (max-width: 768px)
|
|
312
|
-
{
|
|
313
|
-
html
|
|
314
|
-
{
|
|
315
|
-
font-size: 14px;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
#Docuserve-Sidebar-Container
|
|
319
|
-
{
|
|
320
|
-
display: none;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.docuserve-body
|
|
324
|
-
{
|
|
325
|
-
flex-direction: column;
|
|
326
|
-
}
|
|
327
|
-
}
|