hdoc-tools 0.62.4 → 0.63.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.
- package/editor/dist/assets/{index-BtxvGZHW.js → index-Dknn5g5A.js} +5 -4
- package/editor/dist/index.html +13 -13
- package/hdoc-build.js +5 -3
- package/hdoc-content-routes.js +136 -4
- package/hdoc-serve.js +26 -3
- package/hdoc-validate-interbook.js +8 -0
- package/hdoc-validate.js +92 -35
- package/package.json +1 -1
- package/ui/css/theme-default/styles/base.css +86 -21
- package/ui/css/theme-default/styles/components/api-doc.css +6 -3
- package/ui/css/theme-default/styles/components/content.css +140 -39
- package/ui/css/theme-default/styles/components/custom-block.css +1 -1
- package/ui/css/theme-default/styles/components/htl-doc.css +243 -64
- package/ui/css/theme-default/styles/components/htl-library.css +152 -0
- package/ui/css/theme-default/styles/components/htl-search.css +267 -0
- package/ui/css/theme-default/styles/components/sidebar.css +59 -16
- package/ui/css/theme-default/styles/fonts.css +17 -3
- package/ui/css/theme-default/styles/htldoc.layouts.css +756 -87
- package/ui/css/theme-default/styles/vars.css +40 -35
- package/ui/favicon.svg +64 -0
- package/ui/images/hornbill-logo-full-reversed.svg +92 -0
- package/ui/images/hornbill-logo-full.svg +92 -0
- package/ui/images/hug_library.jpg +0 -0
- package/ui/images/mcp-catalog.svg +9 -0
- package/ui/images/products/hornbill-square.svg +1 -0
- package/ui/index.html +1106 -342
- package/ui/js/bootstrap.js +89 -0
- package/ui/js/doc.hornbill.js +3156 -751
- package/ui/js/hb.vue.js +121 -0
- package/ui/js/highlightjs/highlight.pack.js +1513 -2
- package/ui/js/highlightjs/styles/vs2015-accessible.css +141 -0
- package/ui/js/highlightjs-badge.js +41 -58
- package/ui/js/mermaid.min.js +1447 -1295
- package/ui/js/webcomponents/hdocApprove.js +115 -0
- package/ui/js/highlightjs/styles/brown-paper.css +0 -64
- package/ui/js/highlightjs/styles/brown-papersq.png +0 -0
- package/ui/js/highlightjs/styles/codepen-embed.css +0 -60
- package/ui/js/highlightjs/styles/color-brewer.css +0 -71
- package/ui/js/highlightjs/styles/darcula.css +0 -77
- package/ui/js/highlightjs/styles/dark.css +0 -63
- package/ui/js/highlightjs/styles/darkula.css +0 -6
- package/ui/js/highlightjs/styles/default.css +0 -99
- package/ui/js/highlightjs/styles/dracula.css +0 -76
- package/ui/js/highlightjs/styles/far.css +0 -71
- package/ui/js/highlightjs/styles/foundation.css +0 -88
- package/ui/js/highlightjs/styles/github-gist.css +0 -71
- package/ui/js/highlightjs/styles/github-mm.css +0 -71
- package/ui/js/highlightjs/styles/github.css +0 -99
- package/ui/js/highlightjs/styles/googlecode.css +0 -89
- package/ui/js/highlightjs/styles/grayscale.css +0 -101
- package/ui/js/highlightjs/styles/idea.css +0 -97
- package/ui/js/highlightjs/styles/ir-black.css +0 -73
- package/ui/js/highlightjs/styles/kavadocs.css +0 -71
- package/ui/js/highlightjs/styles/kavadocsdark.css +0 -120
- package/ui/js/highlightjs/styles/kimbie.dark.css +0 -74
- package/ui/js/highlightjs/styles/kimbie.light.css +0 -74
- package/ui/js/highlightjs/styles/magula.css +0 -70
- package/ui/js/highlightjs/styles/mono-blue.css +0 -59
- package/ui/js/highlightjs/styles/monokai-sublime.css +0 -83
- package/ui/js/highlightjs/styles/monokai.css +0 -70
- package/ui/js/highlightjs/styles/obsidian.css +0 -88
- package/ui/js/highlightjs/styles/paraiso-dark.css +0 -72
- package/ui/js/highlightjs/styles/paraiso-light.css +0 -72
- package/ui/js/highlightjs/styles/railscasts.css +0 -106
- package/ui/js/highlightjs/styles/rainbow.css +0 -85
- package/ui/js/highlightjs/styles/solarized-dark.css +0 -84
- package/ui/js/highlightjs/styles/solarized-light.css +0 -84
- package/ui/js/highlightjs/styles/sunburst.css +0 -102
- package/ui/js/highlightjs/styles/twilight.css +0 -97
- package/ui/js/highlightjs/styles/vs.css +0 -68
- package/ui/js/highlightjs/styles/vs2015.css +0 -117
- package/ui/js/highlightjs/styles/xcode.css +0 -104
- package/ui/js/highlightjs/styles/zenburn.css +0 -80
|
@@ -2,12 +2,7 @@
|
|
|
2
2
|
* Headings
|
|
3
3
|
* -------------------------------------------------------------------------- */
|
|
4
4
|
|
|
5
|
-
.HTL-doc h1,
|
|
6
|
-
.HTL-doc h2,
|
|
7
|
-
.HTL-doc h3,
|
|
8
|
-
.HTL-doc h4,
|
|
9
|
-
.HTL-doc h5,
|
|
10
|
-
.HTL-doc h6 {
|
|
5
|
+
.HTL-doc h1, h2, h3 {
|
|
11
6
|
position: relative;
|
|
12
7
|
font-weight: 600;
|
|
13
8
|
outline: none;
|
|
@@ -27,6 +22,17 @@
|
|
|
27
22
|
font-size: 24px;
|
|
28
23
|
}
|
|
29
24
|
|
|
25
|
+
.HTL-doc .faq-toc-item
|
|
26
|
+
{
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
display:inline-block;
|
|
29
|
+
}
|
|
30
|
+
/* The four .highlight-container rules that were here are gone with the wrapper itself: the
|
|
31
|
+
section highlight is now an overlay (.hb-section-highlight in htldoc.layouts.css) and nothing
|
|
32
|
+
re-parents headings any more. These rules were what made the section creep 2px left on each
|
|
33
|
+
repeat click, via margin-left:-32px + padding-left:30px on each nested wrapper. */
|
|
34
|
+
|
|
35
|
+
|
|
30
36
|
.HTL-doc h3 {
|
|
31
37
|
margin: 32px 0 0;
|
|
32
38
|
letter-spacing: -0.01em;
|
|
@@ -38,7 +44,7 @@
|
|
|
38
44
|
position: absolute;
|
|
39
45
|
font-size: 18px;
|
|
40
46
|
left: -25px;
|
|
41
|
-
top: 52
|
|
47
|
+
/*top: 52%;*/
|
|
42
48
|
width: 32px;
|
|
43
49
|
/*so will over lap headre slightly - stops flicker when hover out of header into anchor */
|
|
44
50
|
opacity: 0;
|
|
@@ -49,7 +55,7 @@
|
|
|
49
55
|
position: absolute;
|
|
50
56
|
font-size: 18px;
|
|
51
57
|
left: -25px;
|
|
52
|
-
top: 5px
|
|
58
|
+
/*top: 5px;*/
|
|
53
59
|
width: 32px;
|
|
54
60
|
/*so will over lap headre slightly - stops flicker when hover out of header into anchor */
|
|
55
61
|
opacity: 0;
|
|
@@ -75,8 +81,8 @@
|
|
|
75
81
|
}
|
|
76
82
|
|
|
77
83
|
/**
|
|
78
|
-
|
|
79
|
-
|
|
84
|
+
* Paragraph and inline elements
|
|
85
|
+
* -------------------------------------------------------------------------- */
|
|
80
86
|
|
|
81
87
|
.HTL-doc p,
|
|
82
88
|
.HTL-doc summary {
|
|
@@ -112,13 +118,21 @@
|
|
|
112
118
|
color: var(--htl-c-brand-dark);
|
|
113
119
|
}
|
|
114
120
|
|
|
121
|
+
.dark .HTL-doc a {
|
|
122
|
+
color: var(--htl-c-brand-light);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.dark .HTL-doc a:hover {
|
|
126
|
+
color: var(--htl-c-brand-lighter);
|
|
127
|
+
}
|
|
128
|
+
|
|
115
129
|
.HTL-doc strong {
|
|
116
130
|
font-weight: 600;
|
|
117
131
|
}
|
|
118
132
|
|
|
119
133
|
/**
|
|
120
|
-
|
|
121
|
-
|
|
134
|
+
* Lists
|
|
135
|
+
* -------------------------------------------------------------------------- */
|
|
122
136
|
|
|
123
137
|
.HTL-doc ul,
|
|
124
138
|
.HTL-doc ol {
|
|
@@ -144,14 +158,19 @@
|
|
|
144
158
|
}
|
|
145
159
|
|
|
146
160
|
/**
|
|
147
|
-
|
|
148
|
-
|
|
161
|
+
* Table
|
|
162
|
+
* -------------------------------------------------------------------------- */
|
|
149
163
|
|
|
150
164
|
.HTL-doc table {
|
|
151
|
-
display:
|
|
152
|
-
|
|
165
|
+
display: table;
|
|
166
|
+
width: 100%;
|
|
167
|
+
border-collapse: separate;
|
|
168
|
+
border-spacing: 0;
|
|
153
169
|
margin: 20px 0;
|
|
154
170
|
font-size: var(--htl-default-font-size);
|
|
171
|
+
border: 1px solid var(--htl-c-divider);
|
|
172
|
+
border-radius: var(--htl-box-radius);
|
|
173
|
+
overflow: hidden;
|
|
155
174
|
/* sets font-size for table and table rows/td/th etc*/
|
|
156
175
|
}
|
|
157
176
|
|
|
@@ -167,10 +186,21 @@
|
|
|
167
186
|
.HTL-doc th,
|
|
168
187
|
.HTL-doc td {
|
|
169
188
|
border: 1px solid var(--htl-c-divider);
|
|
189
|
+
border-top: none;
|
|
190
|
+
border-left: none;
|
|
170
191
|
padding: 10px 14px;
|
|
171
192
|
vertical-align: top;
|
|
172
193
|
}
|
|
173
194
|
|
|
195
|
+
.HTL-doc th:last-child,
|
|
196
|
+
.HTL-doc td:last-child {
|
|
197
|
+
border-right: none;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
.HTL-doc tr:last-child td {
|
|
201
|
+
border-bottom: none;
|
|
202
|
+
}
|
|
203
|
+
|
|
174
204
|
.HTL-doc th {
|
|
175
205
|
font-size: var(--htl-default-font-size);
|
|
176
206
|
font-weight: 600;
|
|
@@ -182,18 +212,21 @@
|
|
|
182
212
|
}
|
|
183
213
|
|
|
184
214
|
/**
|
|
185
|
-
|
|
186
|
-
|
|
215
|
+
* Decorational elements
|
|
216
|
+
* -------------------------------------------------------------------------- */
|
|
187
217
|
|
|
188
218
|
.HTL-doc hr {
|
|
189
219
|
margin: 16px 0;
|
|
190
220
|
border: none;
|
|
191
|
-
border-top: 1px solid var(--htl-c-divider
|
|
221
|
+
border-top: 1px solid var(--htl-c-divider);
|
|
222
|
+
/* bootstrap's reboot puts opacity:.25 on hr, which multiplied the divider alpha down to
|
|
223
|
+
near-invisible (and fully invisible in dark mode) - reset it and rely on the var's own alpha */
|
|
224
|
+
opacity: 1;
|
|
192
225
|
}
|
|
193
226
|
|
|
194
227
|
/**
|
|
195
|
-
|
|
196
|
-
|
|
228
|
+
* Custom Block
|
|
229
|
+
* -------------------------------------------------------------------------- */
|
|
197
230
|
|
|
198
231
|
.HTL-doc .custom-block {
|
|
199
232
|
margin: 16px 0;
|
|
@@ -235,8 +268,8 @@
|
|
|
235
268
|
}
|
|
236
269
|
|
|
237
270
|
/**
|
|
238
|
-
|
|
239
|
-
|
|
271
|
+
* Code
|
|
272
|
+
* -------------------------------------------------------------------------- */
|
|
240
273
|
|
|
241
274
|
/* inline code */
|
|
242
275
|
.HTL-doc :not(pre, h1, h2, h3, h4, h5, h6)>code {
|
|
@@ -276,14 +309,14 @@
|
|
|
276
309
|
|
|
277
310
|
@media (min-width: 640px) {
|
|
278
311
|
.HTL-doc div[class*='language-'] {
|
|
279
|
-
border-radius:
|
|
312
|
+
border-radius: var(--htl-box-radius);
|
|
280
313
|
margin: 16px 0;
|
|
281
314
|
}
|
|
282
315
|
}
|
|
283
316
|
|
|
284
317
|
@media (max-width: 639px) {
|
|
285
318
|
.HTL-doc li div[class*='language-'] {
|
|
286
|
-
border-radius:
|
|
319
|
+
border-radius: var(--htl-box-radius) 0 0 var(--htl-box-radius);
|
|
287
320
|
}
|
|
288
321
|
}
|
|
289
322
|
|
|
@@ -359,13 +392,10 @@
|
|
|
359
392
|
left: 1rem;
|
|
360
393
|
}
|
|
361
394
|
|
|
395
|
+
/* the same selector used to be declared twice back-to-back (opacity 0.4 then 0.7 - the second
|
|
396
|
+
won); collapsed to the surviving values */
|
|
362
397
|
.HTL-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) {
|
|
363
398
|
filter: blur(0.095rem);
|
|
364
|
-
opacity: 0.4;
|
|
365
|
-
transition: filter 0.35s, opacity 0.35s;
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
.HTL-doc [class*='language-'] .has-focused-lines .line:not(.has-focus) {
|
|
369
399
|
opacity: 0.7;
|
|
370
400
|
transition: filter 0.35s, opacity 0.35s;
|
|
371
401
|
}
|
|
@@ -486,40 +516,65 @@
|
|
|
486
516
|
opacity: 0;
|
|
487
517
|
}
|
|
488
518
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
* -------------------------------------------------------------------------- */
|
|
492
|
-
|
|
493
|
-
.HTL-doc .VPTeamMembers {
|
|
494
|
-
margin-top: 24px;
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
.HTL-doc .VPTeamMembers.small.count-1 .container {
|
|
498
|
-
margin: 0 !important;
|
|
499
|
-
max-width: calc((100% - 24px) / 2) !important;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
.HTL-doc .VPTeamMembers.small.count-2 .container,
|
|
503
|
-
.HTL-doc .VPTeamMembers.small.count-3 .container {
|
|
504
|
-
max-width: 100% !important;
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
.HTL-doc .VPTeamMembers.medium.count-1 .container {
|
|
508
|
-
margin: 0 !important;
|
|
509
|
-
max-width: calc((100% - 24px) / 2) !important;
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
|
|
519
|
+
/* The VPTeamMembers rules that lived here were VitePress theme heritage - VPTeamMembers is a
|
|
520
|
+
literal VitePress component; nothing in the hdocbook pipeline or this front-end emits it. */
|
|
513
521
|
|
|
514
522
|
/* CUSTOM HTL CLASSES FOR HTDOC */
|
|
515
|
-
/* highlightjs code copy badge
|
|
523
|
+
/* highlightjs code copy badge.
|
|
524
|
+
Upstream positions the badge absolutely over the code block at opacity 0.5, so it sat on top
|
|
525
|
+
of the first line of code - the code showed through the badge and neither the language name,
|
|
526
|
+
the clipboard icon nor the code underneath were readable. Taking it out of absolute
|
|
527
|
+
positioning turns it into a normal flow element: the badge script inserts it as the first
|
|
528
|
+
child of the <pre>, so it becomes a full-width header bar above the code: language name left,
|
|
529
|
+
copy icon right. Nothing overlaps, and because the scroll container is the
|
|
530
|
+
<code class="hljs"> below it, the bar also stays put when a long line is scrolled.
|
|
531
|
+
Kept visually identical to hdoc serve (hdoc-tools 0.62.3), which fixes the same problem in the
|
|
532
|
+
badge template inside its own copy of highlightjs-badge.js. Here it is done in CSS instead, so
|
|
533
|
+
the local accessibility fixes in js/highlightjs-badge.js are left alone: same flex row,
|
|
534
|
+
space-between, #555 bar, 7px top corners, full width. */
|
|
516
535
|
.HTL-doc .code-badge {
|
|
536
|
+
position: static !important;
|
|
537
|
+
display: flex;
|
|
538
|
+
flex-direction: row;
|
|
539
|
+
align-items: center;
|
|
540
|
+
justify-content: space-between;
|
|
541
|
+
width: 100%;
|
|
542
|
+
box-sizing: border-box;
|
|
543
|
+
opacity: 1 !important;
|
|
517
544
|
background: #555 !important;
|
|
545
|
+
border-radius: 7px 7px 0 0 !important;
|
|
518
546
|
padding: 8px !important;
|
|
519
547
|
}
|
|
520
548
|
|
|
549
|
+
/* Flex column, purely to drop the whitespace-only text nodes the badged <pre> can contain.
|
|
550
|
+
Generated api-doc pages emit an indented <pre>\n <code>...</code>\n </pre>, and under
|
|
551
|
+
the inherited white-space:pre that indentation renders as blank lines - measured on
|
|
552
|
+
docs.hornbill.com as 24px above the badge (so the bar floated away from the tab strip) and
|
|
553
|
+
48px of dead space below the code: 223px of box for 110px of code. A flex container does not
|
|
554
|
+
generate anonymous boxes for whitespace-only text, so both gaps go without touching the
|
|
555
|
+
content pipeline. Measured after: 151px, badge flush at the top, code height unchanged. */
|
|
556
|
+
.HTL-doc .code-badge-pre {
|
|
557
|
+
display: flex;
|
|
558
|
+
flex-direction: column;
|
|
559
|
+
}
|
|
560
|
+
|
|
521
561
|
.HTL-doc .code-badge-copy-icon {
|
|
522
562
|
font-size: 1.3em !important;
|
|
563
|
+
margin-top: 0 !important;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
/* Generated API-doc pages (appAPIDocGen and the esp platform book) ship an inline
|
|
567
|
+
<style>.tab-code{margin-top:-1.7em}</style> with every Code Examples section - a legacy hack
|
|
568
|
+
from when the badge was an absolute overlay, meant to pull the code flush under the tab strip.
|
|
569
|
+
With the badge now a static in-flow header bar (first child of the <pre>, above), -1.7em drags
|
|
570
|
+
the code up OVER the badge and clips it to a sliver. It only shows on SPA navigations: the
|
|
571
|
+
article is injected raw there, whereas on a full page load Vue's initial mount compiles the
|
|
572
|
+
container and drops the <style>, so a refresh looked "fixed". The whitespace gap that hack
|
|
573
|
+
papered over is already solved properly by .code-badge-pre{display:flex} above. The <style>
|
|
574
|
+
block is being removed from the generator templates too, but published books keep shipping it
|
|
575
|
+
until they are rebuilt - this override protects them all now. */
|
|
576
|
+
.HTL-doc .code-badge-pre > code.tab-code {
|
|
577
|
+
margin-top: 0 !important;
|
|
523
578
|
}
|
|
524
579
|
|
|
525
580
|
/* HTL inline styles */
|
|
@@ -602,6 +657,7 @@
|
|
|
602
657
|
background-color: #666666;
|
|
603
658
|
}
|
|
604
659
|
|
|
660
|
+
/* tolerance alias for the common misspelling - renders the correctly spelled badge */
|
|
605
661
|
.HTL-doc .badge.badge-depreciated:after {
|
|
606
662
|
content: "Deprecated";
|
|
607
663
|
border: solid 1px #494949;
|
|
@@ -629,6 +685,7 @@
|
|
|
629
685
|
background-color: rgb(184, 0, 0);
|
|
630
686
|
}
|
|
631
687
|
|
|
688
|
+
/* API endpoint badge styles */
|
|
632
689
|
.HTL-doc .badge.badge-endpoint-internal:after {
|
|
633
690
|
content: "internal";
|
|
634
691
|
white-space: nowrap;
|
|
@@ -734,7 +791,6 @@
|
|
|
734
791
|
background-color: #4A536B;
|
|
735
792
|
}
|
|
736
793
|
|
|
737
|
-
|
|
738
794
|
.HTL-doc .error-msg {
|
|
739
795
|
color: rgb(184, 0, 0);
|
|
740
796
|
}
|
|
@@ -759,7 +815,7 @@
|
|
|
759
815
|
|
|
760
816
|
.HTL-doc .hdoc-alert {
|
|
761
817
|
border: 1px solid transparent;
|
|
762
|
-
border-radius:
|
|
818
|
+
border-radius: var(--htl-box-radius);
|
|
763
819
|
padding: 16px 16px 8px;
|
|
764
820
|
line-height: 24px;
|
|
765
821
|
font-size: var(--htl-default-font-size);
|
|
@@ -768,7 +824,9 @@
|
|
|
768
824
|
}
|
|
769
825
|
|
|
770
826
|
.HTL-doc .hdoc-alert p {
|
|
771
|
-
margin: 8 0
|
|
827
|
+
/* was the unitless "margin: 8 0", which the parser drops entirely - matches the equivalent
|
|
828
|
+
rule in custom-block.css */
|
|
829
|
+
margin: 8px 0;
|
|
772
830
|
}
|
|
773
831
|
|
|
774
832
|
.HTL-doc .hdoc-alert .hdoc-alert-title .bi {
|
|
@@ -855,20 +913,15 @@
|
|
|
855
913
|
}
|
|
856
914
|
|
|
857
915
|
|
|
858
|
-
|
|
859
916
|
/* lighter bg for code blocks */
|
|
860
917
|
.HTL-doc .hljs {
|
|
861
918
|
background: #494949;
|
|
862
919
|
width: 100%;
|
|
863
|
-
font-size: 0.9em !important;
|
|
864
|
-
line-height: 1.4em;
|
|
865
920
|
}
|
|
866
921
|
|
|
867
922
|
.dark .HTL-doc .hljs {
|
|
868
923
|
background: #000000;
|
|
869
924
|
width: 100%;
|
|
870
|
-
font-size: 0.9em !important;
|
|
871
|
-
|
|
872
925
|
}
|
|
873
926
|
|
|
874
927
|
/* image sizing for icon library */
|
|
@@ -887,4 +940,130 @@
|
|
|
887
940
|
width: 110px;
|
|
888
941
|
margin-top: -5px;
|
|
889
942
|
padding-right: 5px;
|
|
890
|
-
}
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
/* Consistent border-radius for images */
|
|
946
|
+
.HTL-doc img {
|
|
947
|
+
border-radius: var(--htl-box-radius);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
/* WCAG AAA: Override inline gray color for accessibility */
|
|
951
|
+
.HTL-doc [style*="color: gray"],
|
|
952
|
+
.HTL-doc [style*="color:gray"] {
|
|
953
|
+
color: #595959 !important;
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
/* hdoc-approve signature style (Caveat font, loaded from Google Fonts by both entry pages).
|
|
957
|
+
Moved here from an inline <style> in index.html so the inline/embedded view - which can
|
|
958
|
+
also mount hdoc-approve - renders signatures the same way. */
|
|
959
|
+
.caveat-text {
|
|
960
|
+
font-family: 'Caveat', serif;
|
|
961
|
+
font-optical-sizing: auto;
|
|
962
|
+
font-weight: 400;
|
|
963
|
+
font-style: normal;
|
|
964
|
+
font-size: 18px;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
/*--
|
|
968
|
+
MCP server catalog (/mcp) and its toolbar icon.
|
|
969
|
+
|
|
970
|
+
The page renders inside .HTL-doc - the same typography scope a book page uses - so
|
|
971
|
+
headings, body text, code spans and tables all come from the article styles above.
|
|
972
|
+
That is deliberate: this page is documentation about the MCP servers, so it should
|
|
973
|
+
read as a page of documentation rather than carry a look of its own. Almost nothing
|
|
974
|
+
is needed here as a result.
|
|
975
|
+
|
|
976
|
+
Do NOT set overflow or max-width on .McpCatalog. This site is a fixed-viewport shell:
|
|
977
|
+
the document never scrolls, and .hb-container-vertical > .hb-container-expand in
|
|
978
|
+
htldoc.layouts.css already makes each view its own scroll region, exactly as the
|
|
979
|
+
library, search and book views do. An earlier version added its own, which put the
|
|
980
|
+
scrollbar partway across the screen instead of at the window edge. --*/
|
|
981
|
+
.hb-icon-mcp {
|
|
982
|
+
display: inline-block;
|
|
983
|
+
/*-- the toolbar buttons are btn-sm, so 1em here is 12px and the mark read as a
|
|
984
|
+
speck. Root font-size on this site is 14px, not 16. The Bootstrap Icons beside
|
|
985
|
+
it measure 18px but carry their own font padding, whereas a mask fills its box
|
|
986
|
+
exactly - so matching their box left this looking smaller than them --*/
|
|
987
|
+
width: 1.45rem;
|
|
988
|
+
height: 1.45rem;
|
|
989
|
+
vertical-align: -0.35em;
|
|
990
|
+
background-color: currentColor;
|
|
991
|
+
-webkit-mask: url("../../../../images/mcp-catalog.svg") no-repeat center;
|
|
992
|
+
mask: url("../../../../images/mcp-catalog.svg") no-repeat center;
|
|
993
|
+
-webkit-mask-size: contain;
|
|
994
|
+
mask-size: contain;
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
.McpCatalog .content-wrapper {
|
|
998
|
+
padding: 1.5rem 2.5rem 4rem 2.5rem;
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
/*-- sits beside the server url, so the reader sees the size of a corpus at the point
|
|
1002
|
+
they are deciding whether to connect to it --*/
|
|
1003
|
+
.mcp-server-count {
|
|
1004
|
+
margin-left: 0.75rem;
|
|
1005
|
+
color: var(--htl-c-text-3);
|
|
1006
|
+
font-size: 0.9em;
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
/*-- The Name / URL pair a client's "add server" form asks for. Grid rather than the
|
|
1010
|
+
article's <dl> defaults so the two labels line up and the values sit beside them. --*/
|
|
1011
|
+
.mcp-connect {
|
|
1012
|
+
display: grid;
|
|
1013
|
+
grid-template-columns: max-content 1fr;
|
|
1014
|
+
column-gap: 1rem;
|
|
1015
|
+
row-gap: 0.35rem;
|
|
1016
|
+
align-items: center;
|
|
1017
|
+
margin: 0 0 1.25rem 0;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
.mcp-connect dt {
|
|
1021
|
+
font-weight: 400;
|
|
1022
|
+
color: var(--htl-c-text-3);
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
.mcp-connect dd {
|
|
1026
|
+
display: flex;
|
|
1027
|
+
align-items: center;
|
|
1028
|
+
gap: 0.4rem;
|
|
1029
|
+
margin: 0;
|
|
1030
|
+
min-width: 0;
|
|
1031
|
+
}
|
|
1032
|
+
|
|
1033
|
+
.mcp-connect dd code {
|
|
1034
|
+
user-select: all;
|
|
1035
|
+
overflow-wrap: anywhere;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
/*-- matches the code-block badge's idiom: quiet until hovered, tick on success --*/
|
|
1039
|
+
.mcp-copy {
|
|
1040
|
+
flex: 0 0 auto;
|
|
1041
|
+
border: 0;
|
|
1042
|
+
background: transparent;
|
|
1043
|
+
color: var(--htl-c-text-3);
|
|
1044
|
+
padding: 0.15rem 0.35rem;
|
|
1045
|
+
border-radius: 0.25rem;
|
|
1046
|
+
line-height: 1;
|
|
1047
|
+
cursor: pointer;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
.mcp-copy:hover,
|
|
1051
|
+
.mcp-copy:focus-visible {
|
|
1052
|
+
color: var(--htl-c-text-1);
|
|
1053
|
+
background-color: var(--htl-c-bg-mute);
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
.mcp-copy .bi-check2 {
|
|
1057
|
+
color: var(--htl-c-green, #006737);
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
@media (max-width: 640px) {
|
|
1061
|
+
.mcp-connect {
|
|
1062
|
+
grid-template-columns: minmax(0, 1fr);
|
|
1063
|
+
row-gap: 0.1rem;
|
|
1064
|
+
}
|
|
1065
|
+
|
|
1066
|
+
.mcp-connect dd {
|
|
1067
|
+
margin-bottom: 0.5rem;
|
|
1068
|
+
}
|
|
1069
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
.LibraryContent
|
|
2
|
+
{
|
|
3
|
+
|
|
4
|
+
margin: 0 0;
|
|
5
|
+
overflow: initial;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/* No .library-info-panel / .about-list rules here any more: the library page is entirely
|
|
10
|
+
index.html markup, which contains neither class - a whole info-panel block that was never
|
|
11
|
+
rendered by any version of this page. */
|
|
12
|
+
|
|
13
|
+
.LibraryContent .library-content-panel
|
|
14
|
+
{
|
|
15
|
+
width:100%;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.LibraryContent .lib-header > p
|
|
19
|
+
{
|
|
20
|
+
padding-left:3px;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* No `.LibraryContent .library-banner h1` - same dead .library-banner class as above. Removed r723. */
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
.LibraryContent .document-list
|
|
27
|
+
{
|
|
28
|
+
padding-left:3px;
|
|
29
|
+
column-count: 3;
|
|
30
|
+
}
|
|
31
|
+
.LibraryContent .document-list > li .title
|
|
32
|
+
{
|
|
33
|
+
border-left: 6px solid var(--htl-c-gray-light-2);
|
|
34
|
+
align-items: center;
|
|
35
|
+
font-size: 1.125rem;
|
|
36
|
+
line-height: 28px;
|
|
37
|
+
margin-top: 0.25rem!important;
|
|
38
|
+
padding-left: 0.75rem!important;
|
|
39
|
+
padding-right: 0.75rem!important;
|
|
40
|
+
color:var(--htl-c-blue);
|
|
41
|
+
cursor:pointer;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
.LibraryContent .document-list > li .title:hover
|
|
46
|
+
{
|
|
47
|
+
border-left: 6px solid var(--htl-c-blue);
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
.LibraryContent .columns-container
|
|
53
|
+
{
|
|
54
|
+
width:100%;
|
|
55
|
+
padding: 0 0;
|
|
56
|
+
}
|
|
57
|
+
.LibraryContent .columns
|
|
58
|
+
{
|
|
59
|
+
/* Masonry-style layout using CSS columns */
|
|
60
|
+
column-count: 3;
|
|
61
|
+
column-gap: 0;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.LibraryContent .columns .column
|
|
65
|
+
{
|
|
66
|
+
/* Prevent cards from breaking across columns */
|
|
67
|
+
break-inside: avoid;
|
|
68
|
+
display: block;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Product card tiles - rounded corners */
|
|
72
|
+
.LibraryContent .columns .column > div.border {
|
|
73
|
+
border-radius: var(--htl-box-radius);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.LibraryContent .columns .column a.title
|
|
77
|
+
{
|
|
78
|
+
font-size: 0.92rem;
|
|
79
|
+
line-height: 22px;
|
|
80
|
+
margin-top: 0.25rem!important;
|
|
81
|
+
color:var(--htl-c-blue);
|
|
82
|
+
cursor:pointer;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Dark mode: Use brighter link color for WCAG AAA (7:1) contrast */
|
|
86
|
+
.dark .LibraryContent .document-list > li .title,
|
|
87
|
+
.dark .LibraryContent .columns .column a.title {
|
|
88
|
+
color: var(--htl-c-blue-light);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* chevron bullet on tile book links - smaller and muted so it reads as a marker rather than
|
|
92
|
+
competing with the link text, with clear space before the title */
|
|
93
|
+
.LibraryContent .columns .column .book-link-chevron {
|
|
94
|
+
font-size: 0.75em;
|
|
95
|
+
color: var(--htl-c-text-3);
|
|
96
|
+
margin-right: 8px;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* product tile header - icon and title vertically centred on a shared line, with a divider
|
|
100
|
+
separating the header from the book list below. Replaces the old d-table-cell layout with
|
|
101
|
+
its 64px icon (title hung off the icon's top edge). */
|
|
102
|
+
.LibraryContent .columns .column .product-tile-header {
|
|
103
|
+
display: flex;
|
|
104
|
+
align-items: center;
|
|
105
|
+
gap: 10px;
|
|
106
|
+
/* 20px above and below the divider, matching the tile's pad-20 padding so the icon->divider,
|
|
107
|
+
divider->list and tile edge gaps all read as the same distance */
|
|
108
|
+
padding-bottom: 20px;
|
|
109
|
+
margin-bottom: 20px;
|
|
110
|
+
border-bottom: 1px solid var(--htl-c-divider-light);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.LibraryContent .columns .column .product-tile-icon {
|
|
114
|
+
width: 40px;
|
|
115
|
+
height: 40px;
|
|
116
|
+
flex: 0 0 auto;
|
|
117
|
+
display: inline-block;
|
|
118
|
+
/* background image (and its "/ contain" sizing) comes inline from group.icon - see
|
|
119
|
+
index.html. Sourced from _books/products.json via organiseLibrary() in doc.hornbill.js. */
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
@media (max-width: 1540px)
|
|
124
|
+
{
|
|
125
|
+
.LibraryContent .columns
|
|
126
|
+
{
|
|
127
|
+
column-count: 2;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
@media (max-width: 1020px) {
|
|
133
|
+
|
|
134
|
+
.LibraryContent .document-list
|
|
135
|
+
{
|
|
136
|
+
column-count: 2;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.LibraryContent .columns
|
|
140
|
+
{
|
|
141
|
+
column-count: 1;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
@media (max-width: 720px) {
|
|
146
|
+
|
|
147
|
+
.LibraryContent .document-list
|
|
148
|
+
{
|
|
149
|
+
column-count: 1;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
}
|