From 7b1550e971f338cdf685547919c1636f1230e979 Mon Sep 17 00:00:00 2001 From: YanNaingWinn Date: Thu, 12 Mar 2026 20:08:49 +0700 Subject: [PATCH 1/2] Modified UI template and footer and added copyright --- docs/source/_static/cryptnox-logo.png | Bin 0 -> 3467 bytes docs/source/_static/custom.css | 498 +++++++++++++------------- docs/source/_templates/layout.html | 34 +- docs/source/conf.py | 17 +- docs/source/copyright.rst | 46 +++ docs/source/index.rst | 3 + requirements.txt | 1 + 7 files changed, 307 insertions(+), 292 deletions(-) create mode 100644 docs/source/_static/cryptnox-logo.png create mode 100644 docs/source/copyright.rst diff --git a/docs/source/_static/cryptnox-logo.png b/docs/source/_static/cryptnox-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d3148482644735ca8c52d51d9d6dc27958840a GIT binary patch literal 3467 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/custom.css b/docs/source/_static/custom.css index 2e25140..35f60b2 100644 --- a/docs/source/_static/custom.css +++ b/docs/source/_static/custom.css @@ -1,337 +1,323 @@ -/* ── Reset ───────────────────────────────────────────────────────────── */ -*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } - -:root { - --bg: #111827; - --bg-card: #1E2133; - --bg-card-hover: #263046; - --text: #F8FAFC; - --text-muted: #94A3B8; - --accent: #06B6D4; - --accent-hover: #0891B2; - --border: #374151; - --indigo: #6366F1; -} - -/* ── Base ────────────────────────────────────────────────────────────── */ -html, body { - background: var(--bg); - color: var(--text); - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, sans-serif; - min-height: 100vh; - display: flex; - flex-direction: column; -} - -/* ── Sphinx basic theme layout overrides ─────────────────────────────── */ -div.document { - max-width: 1100px; - margin: 0 auto; - padding: 2.5rem 2rem 4rem; - width: 100%; - flex: 1; -} - -div.documentwrapper { - width: 100%; - float: none; -} - -div.bodywrapper { - margin: 0; -} - -div.body { - background: transparent; - color: var(--text); - padding: 0; - min-width: unset; - max-width: unset; - font-size: 1rem; -} - -/* Hide sidebar and prev/next footer generated by basic theme */ -div.sphinxsidebar, -div.sphinxsidebarwrapper, -div.related, -div.footer { display: none; } - -/* ── Page title (h1) ─────────────────────────────────────────────────── */ -/* Hide Sphinx heading anchor symbols */ +/* ── Typography — matches cryptnox-sdk-py ────────────────────────────── */ +body, .wy-body-for-nav { + font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; +} + +/* ── Headings ─────────────────────────────────────────────────────────── */ +h1, h2, h3, h4, h5, h6 { + color: #2c3e50; +} + +/* ── Links ────────────────────────────────────────────────────────────── */ +a { + color: #007bff; +} + +a:hover { + color: #0056b3; +} + +/* ── Code blocks ──────────────────────────────────────────────────────── */ +.highlight { + background-color: #f8f9fa; + border-left: 4px solid #007bff; + padding: 1rem; + margin: 1rem 0; +} + +/* ── Tables ───────────────────────────────────────────────────────────── */ +table { + border-collapse: collapse; + width: 100%; + margin: 1rem 0; +} + +th, td { + border: 1px solid #dee2e6; + padding: 0.75rem; + text-align: left; +} + +th { + background-color: #f8f9fa; + font-weight: bold; +} + +/* ── RTD sidebar nav-search ───────────────────────────────────────────── */ +.wy-side-nav-search > a, +.wy-side-nav-search .wy-dropdown > a { + color: #fcb770; +} + +.wy-side-nav-search .icon::before, +.wy-side-nav-search .fa-home::before { + color: #fcb770; +} + +/* Logo at 80% — same as cryptnox-sdk-py */ +.wy-side-nav-search .wy-dropdown > a img.logo, +.wy-side-nav-search > a img.logo, +.cnx-logo-link svg { + width: 80%; + height: auto; +} + +/* ── Breadcrumbs home icon ────────────────────────────────────────────── */ +.wy-breadcrumbs li a .fa-home::before, +.wy-breadcrumbs li a .icon-home::before, +.wy-breadcrumbs .fa-home, +.wy-breadcrumbs .icon-home { + color: #fcb770; +} + +/* ── Sidebar menu hover ───────────────────────────────────────────────── */ +.wy-menu-vertical a:hover { + color: #ffffff !important; + background: #fcb770 !important; +} + +.wy-menu-vertical li.current a:hover, +.wy-menu-vertical li.current > a:hover { + color: #ffffff !important; + background: #fcb770 !important; +} + +/* ── Hide Sphinx anchor symbols ───────────────────────────────────────── */ a.headerlink { display: none; } -div.body h1 { - font-size: 1.5rem; - font-weight: 700; - letter-spacing: -0.02em; - color: var(--text); - border-bottom: none; - padding-bottom: 0; - margin-bottom: 2rem; +/* ── Hide toctree block on landing page ───────────────────────────────── */ +.toctree-wrapper { display: none; } + +/* ── Content area width ───────────────────────────────────────────────── */ +.wy-nav-content { + max-width: 1100px; } -/* ── Cards grid ──────────────────────────────────────────────────────── */ +/* ── Page title (h1) ──────────────────────────────────────────────────── */ +.rst-content h1 { + font-size: 1.5rem; + font-weight: 700; + letter-spacing: -0.01em; + border-bottom: 1px solid #e1e4e5; + padding-bottom: 0.5rem; + margin-bottom: 2rem; +} -/* The top-level section becomes the grid container */ +/* ── Cards grid ───────────────────────────────────────────────────────── */ #cryptnox-product-documentation { - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 1.5rem; + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1.5rem; } -/* Title, toctree, and hr span full width and sit outside the card grid */ #cryptnox-product-documentation > h1, #cryptnox-product-documentation > .toctree-wrapper { - grid-column: 1 / -1; + grid-column: 1 / -1; } -/* Hide RST transition rulers and toctree block */ -#cryptnox-product-documentation > hr, -#cryptnox-product-documentation > .toctree-wrapper { - display: none; +#cryptnox-product-documentation > hr { + display: none; } -/* ── Product cards ───────────────────────────────────────────────────── */ +/* ── Product cards ────────────────────────────────────────────────────── */ #cryptnox-hardware-wallet, #cryptnox-cli, #cryptnox-sdk-for-python { - background: var(--bg-card); - border: 1px solid var(--border); - border-radius: 12px; - padding: 2rem; - display: flex; - flex-direction: column; - gap: 0.75rem; - position: relative; - overflow: hidden; - transition: border-color 0.2s, background 0.2s, transform 0.2s; -} - -/* ── Card icon ───────────────────────────────────────────────────────── */ -.card-icon { - width: 44px; - height: 44px; - background: rgba(6, 182, 212, 0.1); - border: 1px solid rgba(6, 182, 212, 0.25); - border-radius: 10px; - display: flex; - align-items: center; - justify-content: center; - color: var(--accent); - flex-shrink: 0; - margin-bottom: 0.25rem; -} - -.card-icon svg { - width: 22px; - height: 22px; - stroke: var(--accent); + background: #fff; + border: 1px solid #e1e4e5; + border-radius: 8px; + padding: 1.75rem; + display: flex; + flex-direction: column; + gap: 0.75rem; + position: relative; + overflow: hidden; + transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; + box-shadow: 0 1px 3px rgba(0,0,0,0.06); } -/* Top accent line on hover */ #cryptnox-hardware-wallet::before, #cryptnox-cli::before, #cryptnox-sdk-for-python::before { - content: ''; - position: absolute; - top: 0; left: 0; right: 0; - height: 2px; - background: linear-gradient(90deg, var(--accent), var(--indigo)); - opacity: 0; - transition: opacity 0.2s; + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 3px; + background: linear-gradient(90deg, #007bff, #fcb770); + opacity: 0; + transition: opacity 0.2s; } #cryptnox-hardware-wallet:hover, #cryptnox-cli:hover, #cryptnox-sdk-for-python:hover { - border-color: var(--accent); - background: var(--bg-card-hover); - transform: translateY(-2px); + border-color: #007bff; + box-shadow: 0 4px 12px rgba(0, 123, 255, 0.12); + transform: translateY(-2px); } #cryptnox-hardware-wallet:hover::before, #cryptnox-cli:hover::before, #cryptnox-sdk-for-python:hover::before { - opacity: 1; + opacity: 1; } -/* ── Card heading (h2) ───────────────────────────────────────────────── */ -div.body h2 { - font-size: 1.15rem; - font-weight: 700; - letter-spacing: -0.02em; - color: var(--text); - border-bottom: none; - padding-bottom: 0; - margin-bottom: 0.25rem; +/* ── Card icon ────────────────────────────────────────────────────────── */ +.card-icon { + width: 44px; + height: 44px; + background: rgba(0, 123, 255, 0.08); + border: 1px solid rgba(0, 123, 255, 0.2); + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + flex-shrink: 0; + margin-bottom: 0.25rem; } -/* ── Card description (p) ────────────────────────────────────────────── */ -div.body section p, -div.body .section p { - color: var(--text-muted); - font-size: 0.9rem; - line-height: 1.65; - margin-bottom: 0; +.card-icon svg { + width: 22px; + height: 22px; + stroke: #007bff; } -/* ── Card link list ──────────────────────────────────────────────────── */ -div.body section ul, -div.body .section ul { - list-style: none; - padding-left: 0; - margin-top: auto; - padding-top: 0.5rem; +/* ── Card heading (h2) ────────────────────────────────────────────────── */ +#cryptnox-hardware-wallet h2, +#cryptnox-cli h2, +#cryptnox-sdk-for-python h2 { + font-size: 1.1rem; + font-weight: 700; + color: #2c3e50; + border-bottom: none; + padding-bottom: 0; + margin-bottom: 0.25rem; } -div.body section ul li, -div.body .section ul li { - margin: 0; +/* ── Card description ─────────────────────────────────────────────────── */ +#cryptnox-hardware-wallet p, +#cryptnox-cli p, +#cryptnox-sdk-for-python p { + color: #6b7a8a; + font-size: 0.9rem; + line-height: 1.65; + margin-bottom: 0; } -div.body section ul li p, -div.body .section ul li p { - color: var(--text-muted); - margin: 0; +/* ── Card link list ───────────────────────────────────────────────────── */ +#cryptnox-hardware-wallet ul, +#cryptnox-cli ul, +#cryptnox-sdk-for-python ul { + list-style: none; + padding-left: 0; + margin-top: auto; + padding-top: 0.5rem; } -/* ── Links ───────────────────────────────────────────────────────────── */ -div.body a { - color: var(--accent); - text-decoration: none; - font-weight: 600; - transition: color 0.2s; +#cryptnox-hardware-wallet ul li, +#cryptnox-cli ul li, +#cryptnox-sdk-for-python ul li { + margin: 0; } -div.body a:hover { - color: var(--accent-hover); - text-decoration: none; +#cryptnox-hardware-wallet ul li p, +#cryptnox-cli ul li p, +#cryptnox-sdk-for-python ul li p { + margin: 0; + color: #6b7a8a; } -/* ── Other resources section ─────────────────────────────────────────── */ +/* ── Other resources ──────────────────────────────────────────────────── */ #other-resources { - grid-column: 1 / -1; - background: transparent; - border: none; - border-top: 1px solid var(--border); - border-radius: 0; - padding: 1.5rem 0 0; - gap: 0.5rem; - transform: none !important; + grid-column: 1 / -1; + border-top: 1px solid #e1e4e5; + padding-top: 1.5rem; } -#other-resources:hover { - border-color: var(--border); - background: transparent; - transform: none; -} - -#other-resources::before { display: none; } - #other-resources h2 { - font-size: 0.875rem !important; - font-weight: 600; - color: var(--text-muted) !important; - text-transform: uppercase; - letter-spacing: 0.08em; - margin-bottom: 0.75rem; + font-size: 0.85rem !important; + font-weight: 600; + color: #9ba8b4 !important; + text-transform: uppercase; + letter-spacing: 0.08em; + border-bottom: none !important; + margin-bottom: 0.75rem; } #other-resources ul { - display: flex; - flex-wrap: wrap; - gap: 1.5rem; - padding-top: 0; - margin-top: 0; + list-style: none; + padding: 0; + display: flex; + flex-wrap: wrap; + gap: 1.5rem; +} + +#other-resources ul li { + margin: 0; } #other-resources ul li p { - margin: 0; + margin: 0; } #other-resources a { - color: var(--text-muted) !important; - font-size: 0.875rem; - font-weight: 400 !important; + color: #6b7a8a !important; + font-size: 0.875rem; + font-weight: 400; } #other-resources a:hover { - color: var(--accent) !important; -} - -/* ── Custom Header ───────────────────────────────────────────────────── */ -.cnx-header { - border-bottom: 1px solid var(--border); - padding: 1.25rem 2rem; - display: flex; - align-items: center; - background: var(--bg); + color: #007bff !important; } -.cryptnox-logo { - display: flex; - align-items: center; - text-decoration: none; -} - -.cryptnox-logo svg { - height: 32px; - width: auto; -} - -.cnx-header nav { - margin-left: auto; - display: flex; - gap: 1.5rem; -} - -.cnx-header nav a { - color: var(--text-muted); - text-decoration: none; - font-size: 0.875rem; - font-weight: 400; - transition: color 0.2s; +/* ── Custom footer ────────────────────────────────────────────────────── */ +.cnx-footer { + border-top: 1px solid #e1e4e5; + padding: 1.25rem 2rem; + display: flex; + justify-content: center; + align-items: center; + background: #fcfcfc; } -.cnx-header nav a:hover { - color: var(--accent); +.footer-address { + display: flex; + align-items: center; + gap: 0.75rem; } -/* ── Custom Footer ───────────────────────────────────────────────────── */ -.cnx-footer { - border-top: 1px solid var(--border); - padding: 1.25rem 2rem; - display: flex; - justify-content: center; - align-items: center; - background: var(--bg); - margin-top: auto; +.footer-copyright { + font-size: 0.8rem; } -.footer-address { - display: flex; - align-items: center; - gap: 0.75rem; +.footer-copyright a { + color: #9ba8b4; + text-decoration: none; } -.footer-copyright { - color: var(--text-muted); - font-size: 0.8rem; +.footer-copyright a:hover { + color: #007bff; + text-decoration: underline; } .footer-flag img { - width: 24px; - height: 24px; - display: block; - flex-shrink: 0; + width: 24px; + height: 24px; + display: block; + flex-shrink: 0; } -/* ── Responsive ──────────────────────────────────────────────────────── */ +/* ── Responsive ───────────────────────────────────────────────────────── */ @media (max-width: 860px) { - #cryptnox-product-documentation { - grid-template-columns: 1fr; - } - .cnx-header nav { display: none; } - .cnx-footer { flex-direction: column; align-items: flex-start; gap: 0.5rem; } - div.document { padding: 1.5rem 1rem 3rem; } + #cryptnox-product-documentation { + grid-template-columns: 1fr; + } +} + +@media (max-width: 480px) { + .cnx-footer { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } } diff --git a/docs/source/_templates/layout.html b/docs/source/_templates/layout.html index 07136e2..29add01 100644 --- a/docs/source/_templates/layout.html +++ b/docs/source/_templates/layout.html @@ -76,44 +76,12 @@ {% endblock %} -{# ── Custom header ─────────────────────────────────────────────────── #} -{% block header %} -
- - -
-{% endblock %} - -{# ── Hide prev/next bars ───────────────────────────────────────────── #} -{% block relbar1 %}{% endblock %} -{% block relbar2 %}{% endblock %} - {# ── Custom footer ─────────────────────────────────────────────────── #} {% block footer %}