diff --git a/boostlook.css b/boostlook.css index c111540..476be0c 100644 --- a/boostlook.css +++ b/boostlook.css @@ -1,6 +1,6 @@ /** * README: - * This stylesheet contains styles for both AsciiDoc and Antora templates. + * This stylesheet contains styles for both AsciiDoctor and Antora templates. * The `boostlook` class is applied across both, but due to differences in their HTML structure, * specific CSS rules are necessary to target each appropriately. * @@ -12,7 +12,7 @@ *
...
* * - * - AsciiDoc Template: + * - AsciiDoctor Template: *
* *
...
@@ -24,24 +24,83 @@ * `.boostlook .nav-container` selector targets elements within the `.nav-container` class, * both of which are specific to the Antora HTML structure. * - * - For AsciiDoc templates: + * - For AsciiDoctor templates: * The `.boostlook:not(:has(.doc))` selector is used to target elements that do not have - * a `.doc` child, applying styles specific to AsciiDoc content. + * a `.doc` child, applying styles specific to AsciiDoctor content. * Since the `.doc` class is not present in the structure above, the styles defined for * `.boostlook:not(:has(.doc))` will apply. */ +/*----------------- Root Variables - Start -----------------*/ + :root { - --bl-pasteboard-color: rgb(209, 213, 219); - --bl-pre-background: rgb(248, 248, 248); - --bl-table-border-color: rgb(232, 232, 232); - --bl-table-head-background: rgb(248, 248, 248); - --bl-background: rgb(255, 255, 255); - --bl-card-background-color: rgb(255, 255, 255); - --bl-cyan-color: rgb(0, 90, 156); + --light-bl-pasteboard-color: rgb(209, 213, 219); + --light-bl-pre-background: rgb(248, 248, 248); + --light-bl-table-border-color: rgb(232, 232, 232); + --light-bl-table-head-background: rgb(248, 248, 248); + --light-bl-background: rgb(255, 255, 255); + --light-bl-card-background-color: rgb(255, 255, 255); + --light-bl-cyan-color: rgb(0, 90, 156); + --light-bl-quote-background: rgb(250, 250, 250); + --light-bl-quote-background: rgb(255, 255, 255); + --light-bl-code-background: rgb(255, 255, 255); + --light-bl-code-border-color: rgb(220 220 220); + --dark-bl-quote-background: rgb(11, 59, 82); + --dark-bl-border-color: rgb(209, 228, 242); + --dark-bl-text-color: rgb(209, 228, 242); + --dark-bl-quote-word-color: rgb(209, 228, 242); + --dark-bl-tabpanel-background: rgb(28, 50, 59); + --dark-bl-hljs-keyword-color: rgb(173, 216, 230); + --dark-bl-hljs-number-color: rgb(72, 209, 204); + --dark-bl-hljs-doctag-color: rgb(255, 99, 132); + --dark-bl-hljs-section-color: rgb(255, 69, 58); + --dark-bl-hljs-attribute-color: rgb(70, 130, 180); + --dark-bl-pagination-color: rgb(200, 200, 200); + --dark-bl-code-background: rgb(20, 20, 20); + --dark-bl-code-border-color: transparent; } +/*----------------- Root Variables - End -----------------*/ + +/*----------------- HTML Variables - Start -----------------*/ + +html { + --bl-quote-background: var(--light-bl-quote-background); + --bl-code-background: var(--light-bl-code-background); + --bl-code-border-color: var(--light-bl-code-border-color); + --bl-quote-background: var(--light-bl-quote-background); + --bl-code-background: var(--light-bl-code-background); + --bl-code-border-color: var(--light-bl-code-border-color); + --bl-pasteboard-color: var(--light-bl-pasteboard-color); + --bl-pre-background: var(--light-bl-pre-background); + --bl-table-border-color: var(--light-bl-table-border-color); + --bl-table-head-background: var(--light-bl-table-head-background); + --bl-background: var(--light-bl-background); + --bl-card-background-color: var(--light-bl-card-background-color); + --bl-link-color: var(--light-bl-cyan-color); +} + +html.dark { + --bl-quote-background: var(--dark-bl-quote-background); + --bl-code-background: var(--dark-bl-code-background); + --bl-code-border-color: var(--dark-bl-code-border-color); + --bl-border-color: var(--dark-bl-border-color); + --bl-text-color: var(--dark-bl-text-color); + --bl-quote-word-color: var(--dark-bl-quote-word-color); + --bl-tabpanel-background: var(--dark-bl-tabpanel-background); + --bl-hljs-keyword-color: var(--dark-bl-hljs-keyword-color); + --bl-hljs-number-color: var(--dark-bl-hljs-number-color); + --bl-hljs-doctag-color: var(--dark-bl-hljs-doctag-color); + --bl-hljs-section-color: var(--dark-bl-hljs-section-color); + --bl-hljs-attribute-color: var(--dark-bl-hljs-attribute-color); + --bl-pagination-color: var(--dark-bl-pagination-color); +} + +/*----------------- HTML Variables - End -----------------*/ + +/*----------------- Font-Face Declarations start -----------------*/ + @font-face { font-family: "Noto Sans"; font-style: normal; @@ -68,41 +127,45 @@ font-family: "Noto Sans Mono"; font-style: normal; font-weight: normal; - font-stretch: condensed; + font-stretch: semi-condensed; font-display: block; src: url("/_/boostlook/NotoSansMono.ttf") format("truetype"), url("../../../../tools/boostlook/NotoSansMono.ttf") format("truetype"), url("https://cppalliance.org/fonts/NotoSansMono.ttf") format('truetype'); } +/*----------------- Font-Face Declarations end -----------------*/ + /*----------------- CSS Reset start -----------------*/ *, *::before, *::after { -box-sizing: border-box; + box-sizing: border-box; } * { -margin: 0; + margin: 0; } body { -line-height: 1.5; --webkit-font-smoothing: antialiased; + line-height: 1.5; + -webkit-font-smoothing: antialiased; } img, picture, video, canvas, svg { -display: block; -max-width: 100%; + display: block; + max-width: 100%; } input, button, textarea, select { -font: inherit; + font: inherit; } p, h1, h2, h3, h4, h5, h6 { -overflow-wrap: break-word; + overflow-wrap: break-word; } #root, #__next { -isolation: isolate; + isolation: isolate; } /*----------------- CSS Reset end -----------------*/ +/*----------------- Global Styles for .boostlook start -----------------*/ + .boostlook { font-family: "Noto Sans" !important; } @@ -113,11 +176,11 @@ isolation: isolate; .boostlook h4, .boostlook h5, .boostlook h6 { -display: block; -line-height: 1; -margin-top: 1em; -margin-bottom: 1em; -font-weight: 500; + display: block; + line-height: 1; + margin-top: 1em; + margin-bottom: 1em; + font-weight: 500; } .boostlook h1 { font-size: 1.75em; } @@ -131,19 +194,18 @@ font-weight: 500; margin: 1em 0em; } .boostlook a { -color: var(--bl-cyan-color); -text-decoration: none; + color: var(--bl-link-color); + text-decoration: none; } .boostlook a:hover { -text-decoration: underline; + text-decoration: underline; } .boostlook code { -font-family: "Noto Sans Mono", monospace; + font-family: "Noto Sans Mono", monospace; } -.boostlook h6:has(+table) -{ -margin-left: 1em; +.boostlook h6:has(+table) { + margin-left: 1em; } .boostlook p code, @@ -152,14 +214,85 @@ margin-left: 1em; .boostlook p kbd, .boostlook p samp, .boostlook p pre { - background-color: transparent !important; + background-color: transparent !important; } .boostlook .content div:has(> table) { overflow-x: auto; } -/*----------------- Styles specific to AsciiDoc content start -----------------*/ +.boostlook p code, +.boostlook .colist > table code { + color: var(--color-white) !important; +} + +.boostlook .quoteblock, +.boostlook .verseblock { + background: var(--bl-quote-background); + border-left: 3px solid var(--bl-border-color); + color: var(--bl-text-color); +} + +.boostlook .quoteblock::before, +.boostlook .verseblock::before { + color: var(--bl-quote-word-color); +} + +.boostlook .tabpanel { + background-color: var(--bl-tabpanel-background); +} + +.boostlook .hljs-keyword, +.boostlook .hljs-selector-tag, +.boostlook .hljs-subst { + color: var(--bl-hljs-keyword-color); +} + +.boostlook .hljs-number { + color: var(--bl-hljs-number-color); +} + +.boostlook .hljs-doctag, +.boostlook .hljs-string { + color: var(--bl-hljs-doctag-color); +} + +.boostlook .hljs-section, +.boostlook .hljs-selector-id, +.boostlook .hljs-title { + color: var(--bl-hljs-section-color); +} + +.boostlook p a:link, +.boostlook p a:visited, +.boostlook table a, +.boostlook .pagination a { + color: var(--bl-link-color); +} + +.boostlook .hljs-attribute, +.boostlook .hljs-name, +.boostlook .hljs-tag { + color: var(--bl-hljs-attribute-color); +} + +.boostlook nav.pagination span::before { + color: var(--bl-pagination-color); +} + + +/*----------------- Global Styles for .boostlook end -----------------*/ + +/*----------------- Styles specific to AsciiDoctor content start -----------------*/ + +.article.toc2.toc-left { + min-height: 100vh; + max-width: 80rem; + margin-left: auto; + margin-right: auto; + background-color: var(--bl-pasteboard-color); + position: relative; +} .boostlook:not(:has(.doc)) pre { font-family: "Noto Sans Mono", monospace; @@ -187,13 +320,8 @@ margin-left: 1em; padding: 0.25em 0.55em; } -.article.toc2.toc-left { - min-height: 100vh; - max-width: 80rem; - margin-left: auto; - margin-right: auto; - padding: 1rem; - background-color: var(--bl-pasteboard-color); +.boostlook #header > h1 { + margin-top: 0; } .boostlook #toc > ul.sectlevel1 { @@ -223,105 +351,124 @@ margin-left: 1em; .boostlook:not(:has(.doc)), .boostlook #toc.toc2 { background-color: var(--bl-card-background-color); - border-radius: 0.5rem; padding: 1rem; } +.boostlook #toc.toc2 { + padding-left: 0; +} + .boostlook #content { overflow-x: auto; } +.boostlook #toggle-toc { + display: none; +} + @media screen and (min-width: 768px) { + .article.toc2.toc-left { + padding: 1rem; + } + + .boostlook:not(:has(.doc)), + .boostlook #toc.toc2 { + border-radius: 0.5rem; + } + .boostlook #toc.toc2 { position: fixed; - width: 17rem; + width: 16rem; left: max(1rem, calc(50% - 39rem)); top: 1rem; - padding: 1.25em 1em; overflow-y: auto; overflow-x: hidden; z-index: 1000; height: calc(100vh - 2rem); + padding: 1rem; } .boostlook:not(:has(.doc)) { margin-left: 18rem; } + + .boostlook #toggle-toc { + display: block; + position: fixed; + top: 1rem; + left: calc(max(1rem, calc(50% - 39rem)) + 16rem); + background-color: transparent; + border: 0; + padding: 0; + cursor: pointer; + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; + background-color: rgb(241 242 244); + background-image: url("data:image/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 3V11L0 7L4 3Z' fill='%236B7280'/%3E%3Crect x='6' width='2' height='14' fill='%236B7280'/%3E%3C/svg%3E"); + background-size: 0.75rem; + background-repeat: no-repeat; + background-position: center; + height: calc(100vh - 2rem); + width: 1.5rem; + text-indent: -9999px; + z-index: 1001; + } + + .boostlook.toc-hidden #toggle-toc { + background-image: url("data:image/svg+xml,%3Csvg width='8' height='14' viewBox='0 0 8 14' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M4 3V11L8 7L4 3Z' fill='%236B7280'/%3E%3Crect x='0' width='2' height='14' fill='%236B7280'/%3E%3C/svg%3E"); + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; + left: calc(max(1rem, calc(50% - 39rem))); + } + + .boostlook #toc.toc2 { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + + .boostlook.toc-hidden { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + + .boostlook.toc-hidden { + margin-left: 1.5rem; + } } -/*----------------- Styles specific to AsciiDoc content end -----------------*/ +/*----------------- Styles specific to AsciiDoctor content end -----------------*/ -/*----------------- Dark mode styles start -----------------*/ +/*----------------- Styles specific to Antora Templates start -----------------*/ -:root { - --dark-bl-quote-background: rgb(11, 59, 82); - --dark-bl-border-color: rgb(209, 228, 242); - --dark-bl-text-color: rgb(209, 228, 242); - --dark-bl-quote-word-color: rgb(209, 228, 242); - --dark-bl-tabpanel-background: rgb(28, 50, 59); - --dark-bl-tabpanel-background: rgb(28, 50, 59); - --dark-hljs-keyword-color: rgb(173, 216, 230); - --dark-hljs-number-color: rgb(72, 209, 204); - --dark-hljs-doctag-color: rgb(255, 99, 132); - --dark-hljs-section-color: rgb(255, 69, 58); - --dark-hljs-attribute-color: rgb(70, 130, 180); +.boostlook .nav-menu .title { + font-size: 1.5rem; } -.dark .boostlook p code, -.dark .boostlook .colist > table code { - color: var(--color-white); +.boostlook .nav-menu > .nav-list > .nav-list { + margin-left: 0; } -.dark .boostlook .quoteblock, -.dark .boostlook .verseblock { - background: var(--dark-bl-quote-background); - border-left: 3px solid var(--dark-bl-border-color); - color: var(--dark-bl-text-color); +.boostlook .nav-menu > .nav-list > .nav-list > li { + font-weight: bolder; } -.dark .boostlook .quoteblock::before, -.dark .boostlook .verseblock::before { - color: var(--dark-bl-quote-word-color); +.boostlook .nav-menu .nav-list li { + line-height: 1.5; } -.dark .boostlook .tabpanel, -.dark .boostlook .tablist .is-selected.tab { - background-color: var(--dark-bl-tabpanel-background); +.boostlook .breadcrumbs ul li { + font-size: 0.875rem !important; } -.dark .boostlook .hljs-keyword, -.dark .boostlook .hljs-selector-tag, -.dark .boostlook .hljs-subst { - color: var(--dark-hljs-keyword-color); +.boostlook #toc #toctitle { + font-size: 1.5rem; } -.dark .boostlook .hljs-number { - color: var(--dark-hljs-number-color); +.boostlook .doc .content pre code { + background-color: var(--bl-code-background) !important; + border-color: var(--bl-code-border-color) !important; } -.dark .boostlook .hljs-doctag, -.dark .boostlook .hljs-string { - color: var(--dark-hljs-doctag-color); -} - -.dark .boostlook .hljs-section, -.dark .boostlook .hljs-selector-id, -.dark .boostlook .hljs-title { - color: var(--dark-hljs-section-color); -} - -.dark .boostlook .title a, -.dark .boostlook p a:link, -.dark .boostlook p a:visited, -.dark .boostlook table a, -.dark .boostlook .pagination a { - color: rgb(125 211 252); -} - -.dark .boostlook .hljs-attribute, -.dark .boostlook .hljs-name, -.dark .boostlook .hljs-tag { - color: var(--dark-hljs-attribute-color); -} - -/*----------------- Dark mode styles end -----------------*/ \ No newline at end of file +/*----------------- Styles specific to Antora Templates end -----------------*/ \ No newline at end of file diff --git a/boostlook.rb b/boostlook.rb index d75f0e0..fa52027 100644 --- a/boostlook.rb +++ b/boostlook.rb @@ -1,9 +1,43 @@ Asciidoctor::Extensions.register do postprocessor do process do |doc, output| - output = output.sub(//, '
') + output = output.sub(//, '
') output = output.sub(/<\/body>/, "
") - #output = output.sub(/<\/body>/, "") + + output = output.sub(/(
)/, '\\1') + output = output.sub(/(<\/div>)\s*(