forked from platypush/platypush
[Docs] Added custom style to the main doc page.
Component lists are now displayed in a grid format, each accompained by an icon.
This commit is contained in:
parent
02049030d0
commit
b80a48ec80
3 changed files with 127 additions and 1 deletions
48
docs/source/_static/scripts/custom.js
Normal file
48
docs/source/_static/scripts/custom.js
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
const processList = (list, level, addTitle) => {
|
||||||
|
const title = list.parentElement.querySelector('a')
|
||||||
|
list.classList.add('grid')
|
||||||
|
if (addTitle)
|
||||||
|
title.classList.add('grid-title')
|
||||||
|
|
||||||
|
list.querySelectorAll(`li.toctree-l${level}`).forEach((item) => {
|
||||||
|
const link = item.querySelector('a')
|
||||||
|
if (link) {
|
||||||
|
item.style.cursor = 'pointer'
|
||||||
|
item.addEventListener('click', () => link.click())
|
||||||
|
}
|
||||||
|
|
||||||
|
const name = item.querySelector('a').innerText
|
||||||
|
const img = document.createElement('img')
|
||||||
|
img.src = `https://static.platypush.tech/icons/${name.toLowerCase()}-64.png`
|
||||||
|
img.alt = ' '
|
||||||
|
item.prepend(img)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const tocWrappers = document.querySelectorAll('.toctree-wrapper.compound')
|
||||||
|
|
||||||
|
if (!tocWrappers.length) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (window.location.pathname.endsWith('/index.html')) {
|
||||||
|
if (tocWrappers.length < 2) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const referenceLists = [
|
||||||
|
...tocWrappers[1].querySelectorAll('ul li.toctree-l1 ul')
|
||||||
|
].slice(0, 4)
|
||||||
|
|
||||||
|
referenceLists.forEach((list) => processList(list, 2, true))
|
||||||
|
} else if (window.location.pathname.endsWith('/plugins.html') || window.location.pathname.endsWith('/backends.html')) {
|
||||||
|
if (tocWrappers.length < 1) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const list = tocWrappers[0].querySelector('ul')
|
||||||
|
if (list)
|
||||||
|
processList(list, 1, false)
|
||||||
|
}
|
||||||
|
})
|
71
docs/source/_static/styles/custom.css
Normal file
71
docs/source/_static/styles/custom.css
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
a, a:visited {
|
||||||
|
/* Don't change the color for visited links */
|
||||||
|
color: var(--pst-color-link) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid {
|
||||||
|
display: grid;
|
||||||
|
|
||||||
|
@media screen and (max-width: 500px) {
|
||||||
|
grid-template-columns: repeat(1, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 501px) and (max-width: 699px) {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (min-width: 700px) {
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a.grid-title {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
margin: 1.5em 0;
|
||||||
|
font-size: 1.5em !important;
|
||||||
|
border-bottom: 1px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid li {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
margin: 0 10px 10px 0;
|
||||||
|
padding: 10px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
border-radius: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid img {
|
||||||
|
width: 32px;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid li code {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid li code .pre {
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid li:hover {
|
||||||
|
background: linear-gradient(0deg, #e0ffe8, #e3ffff);
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid li a {
|
||||||
|
width: calc(100% - 35px);
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid li a code {
|
||||||
|
background: none;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.grid .icon {
|
||||||
|
width: 32px;
|
||||||
|
}
|
|
@ -112,7 +112,14 @@ html_theme_options = {
|
||||||
# Add any paths that contain custom static files (such as style sheets) here,
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
# relative to this directory. They are copied after the builtin static files,
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
# html_static_path = ['_static']
|
html_static_path = ['_static']
|
||||||
|
html_css_files = [
|
||||||
|
'styles/custom.css',
|
||||||
|
]
|
||||||
|
|
||||||
|
html_js_files = [
|
||||||
|
'scripts/custom.js',
|
||||||
|
]
|
||||||
|
|
||||||
# Custom sidebar templates, must be a dictionary that maps document names
|
# Custom sidebar templates, must be a dictionary that maps document names
|
||||||
# to template names.
|
# to template names.
|
||||||
|
|
Loading…
Reference in a new issue