mirror of
https://github.com/evennia/evennia.git
synced 2026-03-23 08:16:30 +01:00
Upgrade Sphinx docs toolchain: modern CSS, version sidebar, and search fixes
- Remove legacy CSS and templates. - Add custom.css ported from live nature theme for Sphinx 7.x. - Update conf.py, drop sphinx-multiversion. - Fix SearchBar and Doc Versions sidebar. - Update requirements.txt to latest stable module versions.
This commit is contained in:
parent
0bc77106fa
commit
e90e568475
8 changed files with 488 additions and 2162 deletions
444
docs/source/_static/custom.css
Normal file
444
docs/source/_static/custom.css
Normal file
|
|
@ -0,0 +1,444 @@
|
|||
/* ===========================================================================
|
||||
Evennia Docs Custom CSS for Sphinx 7.x
|
||||
(Auto-generated: ports all styles from live Evennia nature.css,
|
||||
adapted for modern Sphinx, minimal layout overrides)
|
||||
|
||||
COMMENTS:
|
||||
- All major overrides/fixes are documented.
|
||||
- Responsive and layout hacks are clearly marked for Sphinx 7.x compatibility.
|
||||
- “Magic values” from live Evennia docs are annotated for traceability.
|
||||
========================================================================== */
|
||||
|
||||
/* --- Imports & Font Setup --- */
|
||||
@import url("https://fonts.googleapis.com/css?family=Arvo:400,700,400italic");
|
||||
@import url("https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic");
|
||||
@import url("https://fonts.googleapis.com/css2?family=Courier+Prime:ital,wght@0,400;0,700;1,400;1,700&family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap");
|
||||
|
||||
/* --- Page Layout & Core Backgrounds --- */
|
||||
/* HACK: Body and wrappers for Evennia look. Padding/margin settings ensure consistent backgrounds and edge gutters. */
|
||||
body {
|
||||
font-family: "Open Sans", Helvetica, Arial, sans-serif;
|
||||
background-color: #eee !important;
|
||||
color: #555;
|
||||
width: 100% !important;
|
||||
min-width: 0 !important;
|
||||
max-width: none !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 24px !important; /* Adjust padding as you like */
|
||||
}
|
||||
.bodywrapper {
|
||||
width: 100% !important;
|
||||
min-width: 0 !important;
|
||||
max-width: none !important;
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
/* Container styling for max-width, background, shadow, and border-radius—matches Evennia's live docs. */
|
||||
div.document {
|
||||
background-color: #eeeeea !important;
|
||||
max-width: 1090px; /* Copied from live Evennia for page width */
|
||||
margin: 0 0;
|
||||
box-shadow: 0 0 4px 0 #ececec;
|
||||
border-radius: 6px;
|
||||
}
|
||||
div.body {
|
||||
background-color: #f1f1ef !important;
|
||||
color: #3E4349;
|
||||
padding: 0 30px 30px 30px;
|
||||
font-size: 0.9em;
|
||||
margin-top: -9px;
|
||||
}
|
||||
div.documentwrapper {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
div.bodywrapper {
|
||||
width: 79%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
hr {
|
||||
border: 1px solid #B1B4B6;
|
||||
}
|
||||
|
||||
/* --- Header/Footer Bar --- */
|
||||
/* Header & footer bars: color, margin, radius, and link color tuned for Evennia branding */
|
||||
div.related {
|
||||
background-color: #dbe9f0 !important;
|
||||
line-height: 32px;
|
||||
color: #9FA0A0;
|
||||
font-size: 0.9em;
|
||||
max-width: 1090px;
|
||||
margin: 0 0;
|
||||
border-radius: 0 0 6px 6px;
|
||||
}
|
||||
div.related a {
|
||||
color: #565F62;
|
||||
text-shadow: none;
|
||||
}
|
||||
div.footer {
|
||||
color: #555;
|
||||
width: 100%;
|
||||
padding: 13px 0;
|
||||
text-align: center;
|
||||
font-size: 75%;
|
||||
max-width: 1080px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
div.footer a {
|
||||
color: #444;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* --- Logo Centering --- */
|
||||
/* Center Evennia logo in sidebar or header—matches live docs. */
|
||||
.logo {
|
||||
padding-left: 1px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
display: block;
|
||||
margin-top: -12px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
/* --- Sidebar --- */
|
||||
/* SIDEBAR LAYOUT: Custom overrides to maintain left sidebar (pre-Sphinx 7 behavior)
|
||||
and adapt sidebar coloring/spacing to Evennia's look as of July 2025. */
|
||||
div.sphinxsidebar {
|
||||
font-size: 0.75em;
|
||||
line-height: 1.5em;
|
||||
background-color: #fafaf8;
|
||||
border-right: 1px solid #e4e4dc;
|
||||
background: #eeeeea;
|
||||
}
|
||||
div.sphinxsidebarwrapper {
|
||||
padding: 20px 0;
|
||||
}
|
||||
div.sphinxsidebar h3,
|
||||
div.sphinxsidebar h4 {
|
||||
font-family: Arvo, sans-serif;
|
||||
color: #4f4f4f;
|
||||
font-size: 1.2em;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
padding: 5px 10px;
|
||||
background-color: #dbe9f0 !important;
|
||||
border-radius: 2px;
|
||||
margin-top: 15px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
div.sphinxsidebar h4 {
|
||||
font-size: 1.1em;
|
||||
}
|
||||
div.sphinxsidebar h3 a {
|
||||
color: #444;
|
||||
text-shadow: none;
|
||||
}
|
||||
div.sphinxsidebar p {
|
||||
color: #888;
|
||||
padding: 5px 20px;
|
||||
}
|
||||
div.sphinxsidebar ul {
|
||||
margin: 10px 20px;
|
||||
padding: 0;
|
||||
color: #000;
|
||||
}
|
||||
div.sphinxsidebar a {
|
||||
color: #444;
|
||||
}
|
||||
div.sphinxsidebar input {
|
||||
border: 1px solid #ccc;
|
||||
font-family: Arvo, sans-serif;
|
||||
font-size: 1em;
|
||||
background-color: #f7f7f7;
|
||||
}
|
||||
div.sphinxsidebar .searchformwrapper {
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
/* --- Main Content Headers --- */
|
||||
/* HEADINGS: Matches Evennia live doc headers for background, border, and text style */
|
||||
div.body h1,
|
||||
div.body h2,
|
||||
div.body h3,
|
||||
div.body h4,
|
||||
div.body h5,
|
||||
div.body h6 {
|
||||
font-family: Arvo, Monaco, serif;
|
||||
background-color: #f7f7f3 !important;
|
||||
font-weight: normal;
|
||||
color: #212224;
|
||||
margin: 30px 0px 10px 0px;
|
||||
padding: 5px 0 5px 10px;
|
||||
text-shadow: 0px 1px 0 white;
|
||||
border-bottom: 1px solid #c6d7df;
|
||||
border-left: 10px solid #cfdde8;
|
||||
border-top: 0px solid #cfdde8;
|
||||
}
|
||||
div.body h1 { margin-top: 20px solid #fff; font-size: 230%; }
|
||||
div.body h2 { font-size: 150%; }
|
||||
div.body h3 { font-size: 120%; }
|
||||
div.body h4 { font-size: 110%; }
|
||||
div.body h5 { font-size: 100%; }
|
||||
div.body h6 { font-size: 100%; }
|
||||
|
||||
/* --- Blockquotes --- */
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
color: #797979;
|
||||
background-color: #e1e8e2;
|
||||
border: 1px solid #c7cdc8;
|
||||
padding-left: 14px;
|
||||
padding-right: 15px;
|
||||
margin-left: 0;
|
||||
width: 96%;
|
||||
border-left-style: dotted;
|
||||
border-left-width: medium;
|
||||
position: relative;
|
||||
}
|
||||
blockquote:before {
|
||||
content: "!";
|
||||
float: left;
|
||||
font-size: 230%;
|
||||
opacity: 0.3;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
/* --- Admonitions, Notes, Warnings --- */
|
||||
div.note, .admonition.note {
|
||||
background-color: #e1e8e2 !important;
|
||||
border: 1px solid #ccc;
|
||||
font-style: italic;
|
||||
text-indent: -2.9em;
|
||||
padding-left: 3.5em;
|
||||
}
|
||||
div.note > p { text-indent: 0em; }
|
||||
div.important, .admonition.important {
|
||||
background-color: #fbf7c3 !important;
|
||||
border: 1px solid #c8c59b;
|
||||
font-style: italic;
|
||||
text-indent: -5.5em;
|
||||
padding-left: 6.1em;
|
||||
}
|
||||
div.important > p { text-indent: 0em; }
|
||||
div.warning, .admonition.warning {
|
||||
background-color: #ffe4e4 !important;
|
||||
border: 1px solid #f66;
|
||||
font-style: italic;
|
||||
text-indent: -4.6em;
|
||||
padding-left: 5.2em;
|
||||
}
|
||||
div.warning > p { text-indent: 0em; }
|
||||
div.seealso {
|
||||
background-color: #ffc;
|
||||
border: 1px solid #ff6;
|
||||
}
|
||||
div.topic, aside.topic {
|
||||
background-color: #eee;
|
||||
}
|
||||
div.attention { background-color: #e5f3ff; border-color: #65b9ff; }
|
||||
div.danger { background-color: #fff2f0; border-color: #f33; }
|
||||
p.admonition-title {
|
||||
margin-right: 0.2em;
|
||||
display: inline;
|
||||
font-weight: bold;
|
||||
padding-right: 0.6em;
|
||||
}
|
||||
p.admonition-title:after { content: ":"; }
|
||||
div.admonition p.admonition-title + p { display: inline; }
|
||||
|
||||
/* --- Version added/changed/deprecated boxes --- */
|
||||
.versionadded { background-color: #e9f6e1; }
|
||||
.versionchanged { background-color: #b7e6e8; padding-left: 10px; }
|
||||
.deprecated { background-color: #fff3f3; }
|
||||
|
||||
/* --- Lists & Lists in API Docs --- */
|
||||
li > p:first-child { margin-top: 0px; margin-bottom: 0px; }
|
||||
li > p { margin-top: 0px; margin-bottom: 0px; }
|
||||
dl.field-list.simple > dd.field-odd > ul.simple > li > ul { margin-left: 24px; }
|
||||
dd.field-odd > ul.simple > li > ul > li > dl.simple { margin-bottom: -8px; }
|
||||
|
||||
/* --- Code blocks, Inline code, API highlighting --- */
|
||||
/* Pygments highlighting is loaded separately—only container backgrounds here. */
|
||||
div.highlight {
|
||||
background-color: #f1f1ef !important;
|
||||
border-left: 4px double #7ea6b3;
|
||||
border-radius: 4px;
|
||||
margin: 18px 0;
|
||||
}
|
||||
.highlight .hll { background-color: #ffffcc !important; border-radius: 5px; }
|
||||
pre {
|
||||
padding: 10px;
|
||||
background-color: #e3e3e3;
|
||||
color: #222;
|
||||
line-height: 1.2em;
|
||||
border: 1px solid #C6C9CB;
|
||||
font-size: 1.1em;
|
||||
margin: 1.5em 0 1.5em 0;
|
||||
box-shadow: 1px 1px 1px #d8d8d8;
|
||||
}
|
||||
pre, div[class*="highlight-"] { clear: none; }
|
||||
code {
|
||||
background-color: #f7f7f7 !important;
|
||||
color: #6e0e0e !important;
|
||||
font-size: 0.9em;
|
||||
font-family: "Courier Prime", Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
font-weight: normal;
|
||||
border-radius: 3px;
|
||||
padding: 1px 4px;
|
||||
}
|
||||
.viewcode-back {
|
||||
font-family: "Courier Prime", Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
}
|
||||
div.viewcode-block:target {
|
||||
background-color: #f4e9d9;
|
||||
border-top: 1px solid #ac9;
|
||||
border-bottom: 1px solid #ac9;
|
||||
}
|
||||
div.code-block-caption {
|
||||
background-color: #ddd;
|
||||
color: #222;
|
||||
border: 1px solid #C6C9CB;
|
||||
}
|
||||
|
||||
/* --- API/Class/Method Styling --- */
|
||||
.class {
|
||||
font-family: "Courier Prime", Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
font-size: 0.9em;
|
||||
background-color: #f5ffff;
|
||||
padding: 5px;
|
||||
}
|
||||
.method {
|
||||
background-color: #e3ecec;
|
||||
padding: 5px;
|
||||
font-size: 1.0em;
|
||||
}
|
||||
.sig-param {
|
||||
font-family: "Courier Prime", Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
}
|
||||
.sig-paren { margin-left: 1px; }
|
||||
.property {
|
||||
font-family: "Courier Prime", Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
|
||||
}
|
||||
dl.class > dd > p,
|
||||
dl.method > dd > p {
|
||||
font-style: italic;
|
||||
}
|
||||
code.descname { font-size: 0.9em; }
|
||||
.function { background-color: #eff; padding: 5px; }
|
||||
.exception { background-color: #fff9f9; padding: 5px; }
|
||||
div.linenodiv>pre {
|
||||
font-size: 0.9em;
|
||||
line-height: 153%;
|
||||
padding-right: 0;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
/* --- Develop branch warning header --- */
|
||||
.develop {
|
||||
background-color: #ffe4e4;
|
||||
align-content: center;
|
||||
width: auto;
|
||||
text-align: center;
|
||||
letter-spacing: 15px;
|
||||
}
|
||||
|
||||
/* --- Miscellaneous Tweaks --- */
|
||||
a {
|
||||
color: #005B81;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: #fff;
|
||||
text-decoration-color: #bdcbdf;
|
||||
}
|
||||
a:hover {
|
||||
color: #0492CA;
|
||||
text-decoration: underline;
|
||||
text-decoration-color: #9bbed5;
|
||||
}
|
||||
a:visited { color: #551A8B; }
|
||||
a.headerlink { color: #7caeb7; font-size: 0.8em; padding: 0 4px 0 4px; text-decoration: none; }
|
||||
a.headerlink:hover { color: #7caeb7; }
|
||||
ul.sidebar-links { list-style: none; padding-left: 0; margin: 14px 0; }
|
||||
ul.sidebar-links li { padding-bottom: 2px; }
|
||||
|
||||
/* --- Responsive Tweaks --- */
|
||||
/* These media queries are for legacy mobile and tablet support. */
|
||||
@media print, screen and (max-width: 960px) {
|
||||
div.body { min-width: auto; max-width: none; padding: 0 30px 30px 30px; }
|
||||
div.bodywrapper { margin-left: 0px; margin-top: 110px; }
|
||||
div.document, div.documentwrapper, div.bodywrapper { margin: 0 !important; }
|
||||
#top-link { display: none; }
|
||||
}
|
||||
@media print, screen and (max-width: 720px) {
|
||||
div.related>ul { visibility: hidden; }
|
||||
div.related>ul>li.nav-item.nav-item-0 { visibility: visible; }
|
||||
}
|
||||
@media print, screen and (max-width: 480px) {
|
||||
div.body { box-sizing: border-box; padding: 5px; }
|
||||
div.sphinxsidebar, div.document, div.documentwrapper, div.bodywrapper { width: 100%; }
|
||||
}
|
||||
|
||||
/* ━━━━━━━━━━━━━━━━━━━ Sidebar Responsive Layout Fix ━━━━━━━━━━━━━━━━━━━ */
|
||||
/* -- Force old-style left sidebar layout for Sphinx 7 --
|
||||
Sphinx 7+ switched to a single-column mobile-first layout;
|
||||
this hack restores flex-row with sidebar left/content right for desktop.
|
||||
Remove this when upstream Sphinx supports left sidebars natively again.
|
||||
*/
|
||||
.document {
|
||||
display: flex !important;
|
||||
flex-direction: row !important;
|
||||
align-items: flex-start;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Sidebar goes left, main content right */
|
||||
.sphinxsidebar {
|
||||
order: 0 !important;
|
||||
width: 18vw !important;
|
||||
min-width: 170px !important;
|
||||
max-width: 228.891px !important; /* Magic number: matches live Evennia sidebar width at 1200px */
|
||||
flex-shrink: 0 !important;
|
||||
box-sizing: border-box;
|
||||
position: static !important;
|
||||
z-index: 10 !important;
|
||||
background-clip: padding-box;
|
||||
overflow-y: auto;
|
||||
max-height: 100vh;
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
/* Main content fills remaining space */
|
||||
.documentwrapper {
|
||||
order: 1 !important;
|
||||
flex: 1 1 0 !important; /* THIS is what fills the rest! */
|
||||
min-width: 0 !important; /* Required for flex overflow to work */
|
||||
width: auto !important;
|
||||
max-width: none !important;
|
||||
box-sizing: border-box;
|
||||
margin: 0 !important; /* Remove any stray margin */
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
/* Mobile: Stack vertically again at 480px, matches legacy Sphinx/Evennia */
|
||||
@media screen and (max-width: 480px) {
|
||||
.document {
|
||||
flex-direction: column !important;
|
||||
}
|
||||
.sphinxsidebar,
|
||||
.documentwrapper {
|
||||
width: 100% !important;
|
||||
min-width: 0 !important;
|
||||
max-width: 100vw !important;
|
||||
}
|
||||
.sphinxsidebar {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Avoid pop-under: clear floats just in case */
|
||||
.clearer {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* End of Evennia custom CSS */
|
||||
Loading…
Add table
Add a link
Reference in a new issue