From 0bed21b0a8e7acfb9221aafc5844fb584f9b4da8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20K=C5=82ys?= Date: Wed, 25 Mar 2026 08:39:03 +0100 Subject: [PATCH] Polish IntelligenceX API docs styling --- Website/static/css/api.css | 289 +++++++++++++++++- .../themes/intelligencex/theme.manifest.json | 5 + 2 files changed, 290 insertions(+), 4 deletions(-) diff --git a/Website/static/css/api.css b/Website/static/css/api.css index ccc865f13..128cba86f 100644 --- a/Website/static/css/api.css +++ b/Website/static/css/api.css @@ -76,11 +76,19 @@ p { color: var(--pf-muted); margin: 0 0 1rem; } position: sticky; top: 64px; height: calc(100vh - 64px); - overflow-y: auto; + overflow: hidden; display: flex; flex-direction: column; } +.api-sidebar-shell { + display: flex; + flex: 1; + flex-direction: column; + min-height: 0; + height: 100%; +} + .sidebar-header { padding: 0 1rem 0.75rem; border-bottom: 1px solid var(--pf-border); @@ -204,11 +212,138 @@ p { color: var(--pf-muted); margin: 0 0 1rem; } .namespace-select:focus { border-color: var(--pf-accent); } .namespace-select option { background: var(--pf-bg-alt); color: var(--pf-ink); } +body.pf-api-docs .namespace-select.pf-enhanced-native { + position: absolute !important; + left: -9999px !important; + width: 1px !important; + height: 1px !important; + opacity: 0 !important; + pointer-events: none !important; +} + +body.pf-api-docs .pf-combobox { + position: relative; +} + +body.pf-api-docs .pf-combobox-trigger { + position: relative; + width: 100%; + padding: 0.5rem 2.2rem 0.5rem 0.75rem; + border-radius: var(--pf-radius-sm); + border: 1px solid var(--pf-border); + background: var(--pf-bg-alt); + color: var(--pf-ink); + font-family: var(--pf-font-body); + font-size: 0.8rem; + line-height: 1.2; + text-align: left; + cursor: pointer; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + transition: border-color 0.2s, color 0.2s, background 0.2s; +} + +body.pf-api-docs .pf-combobox-trigger::after { + content: ""; + position: absolute; + right: 0.85rem; + top: 50%; + width: 0.5rem; + height: 0.5rem; + border-right: 2px solid currentColor; + border-bottom: 2px solid currentColor; + color: var(--pf-muted); + transform: translateY(-65%) rotate(45deg); + transition: transform 0.15s ease; +} + +body.pf-api-docs .pf-combobox-trigger:hover, +body.pf-api-docs .pf-combobox-trigger:focus-visible { + border-color: var(--pf-accent); + outline: none; +} + +body.pf-api-docs .pf-combobox.open .pf-combobox-trigger::after { + transform: translateY(-35%) rotate(225deg); +} + +body.pf-api-docs .pf-combobox-panel { + position: absolute; + top: calc(100% + 0.45rem); + left: 0; + right: 0; + z-index: 70; + padding: 0.3rem; + border-radius: 14px; + border: 1px solid var(--pf-border); + background: color-mix(in srgb, var(--pf-bg-alt) 94%, transparent); + box-shadow: 0 18px 36px rgba(2, 6, 23, 0.45); + backdrop-filter: blur(10px); +} + +body.pf-api-docs .pf-combobox-list { + display: grid; + gap: 0.15rem; + max-height: min(280px, 42vh); + overflow: auto; + padding-right: 0.15rem; + scrollbar-width: thin; + scrollbar-color: rgba(148, 163, 184, 0.35) rgba(15, 23, 42, 0.8); +} + +body.pf-api-docs .pf-combobox-list::-webkit-scrollbar { + width: 8px; +} + +body.pf-api-docs .pf-combobox-list::-webkit-scrollbar-track { + background: rgba(15, 23, 42, 0.75); + border-radius: 999px; +} + +body.pf-api-docs .pf-combobox-list::-webkit-scrollbar-thumb { + background: linear-gradient(180deg, rgba(148, 163, 184, 0.48), rgba(148, 163, 184, 0.28)); + border-radius: 999px; + border: 1px solid rgba(148, 163, 184, 0.24); +} + +body.pf-api-docs .pf-combobox-list::-webkit-scrollbar-thumb:hover { + background: linear-gradient(180deg, rgba(0, 217, 255, 0.48), rgba(148, 163, 184, 0.35)); +} + +body.pf-api-docs .pf-combobox-option { + display: block; + width: 100%; + padding: 0.5rem 0.6rem; + border: 0; + border-radius: 10px; + background: transparent; + color: var(--pf-ink); + font-family: var(--pf-font-body); + font-size: 0.8rem; + line-height: 1.25; + text-align: left; + cursor: pointer; +} + +body.pf-api-docs .pf-combobox-option:hover, +body.pf-api-docs .pf-combobox-option:focus-visible { + background: rgba(0, 217, 255, 0.12); + color: var(--pf-ink-strong, #fff); + outline: none; +} + +body.pf-api-docs .pf-combobox-option.active { + background: rgba(0, 217, 255, 0.16); + color: var(--pf-accent); +} + /* ===== Sidebar Nav ===== */ .sidebar-nav { flex: 1; overflow-y: auto; - padding: 0 0.75rem; + min-height: 0; + padding: 0 0.75rem 1rem; } .nav-section { margin-bottom: 1rem; } @@ -358,6 +493,44 @@ p { color: var(--pf-muted); margin: 0 0 1rem; } .namespace-group h3 .count { font-size: 0.8rem; font-weight: 400; color: var(--pf-ink); } [data-theme="light"] body.pf-api-docs .all-namespaces .namespace-group h3 .count { color: #334155 !important; } +.namespace-group-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 1rem; + margin-bottom: 0.85rem; +} + +.namespace-group-heading h3 { + margin: 0; +} + +.namespace-group-actions { + display: flex; + justify-content: flex-start; + margin-top: 0.85rem; +} + +.overview-group-toggle { + appearance: none; + border: 1px solid var(--pf-border); + background: rgba(15, 23, 42, 0.42); + color: var(--pf-ink); + border-radius: 999px; + padding: 0.45rem 0.85rem; + font: inherit; + font-size: 0.8rem; + cursor: pointer; + transition: border-color 0.18s ease, background 0.18s ease, color 0.18s ease, transform 0.18s ease; +} + +.overview-group-toggle:hover { + border-color: var(--pf-accent); + background: rgba(0, 217, 255, 0.1); + color: var(--pf-ink-strong, #fff); + transform: translateY(-1px); +} + .type-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; } /* ===== Type Chips ===== */ @@ -1091,7 +1264,7 @@ body.pf-api-docs .overview-stat-value { color: var(--pf-ink-strong, #fff); } -body.pf-api-docs .overview-jump-links { +body.pf-api-docs .overview-jump-list { display: grid; gap: 0.65rem; margin-top: 0.9rem; @@ -1123,11 +1296,88 @@ body.pf-api-docs .overview-jump-link:hover { body.pf-api-docs .type-detail-shell { display: grid; - grid-template-columns: minmax(0, 1fr) minmax(220px, 260px); + grid-template-columns: minmax(0, 1fr) minmax(190px, 220px); gap: 1.5rem; align-items: start; } +body.pf-api-docs .type-toc { + margin: 0; + padding: 1rem 1.05rem; + border-radius: 16px; + background: color-mix(in srgb, var(--pf-card-bg, #111827) 97%, transparent); + border: 1px solid color-mix(in srgb, var(--pf-border, rgba(148, 163, 184, 0.2)) 110%, transparent); + box-shadow: 0 16px 32px rgba(15, 23, 42, 0.18); +} + +body.pf-api-docs .type-toc-header { + display: flex; + align-items: center; + justify-content: space-between; + gap: 0.75rem; + margin-bottom: 0.75rem; +} + +body.pf-api-docs .type-toc-title { + font-size: 0.72rem; + letter-spacing: 0.12em; + text-transform: uppercase; + color: var(--pf-muted); +} + +body.pf-api-docs .type-toc-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 2rem; + height: 2rem; + padding: 0; + border: 1px solid var(--pf-border); + border-radius: 999px; + background: rgba(15, 23, 42, 0.42); + color: var(--pf-muted); + cursor: pointer; + transition: border-color 0.18s ease, background 0.18s ease, color 0.18s ease; +} + +body.pf-api-docs .type-toc-toggle:hover, +body.pf-api-docs .type-toc-toggle:focus-visible { + border-color: var(--pf-accent); + background: rgba(0, 217, 255, 0.1); + color: var(--pf-accent); + outline: none; +} + +body.pf-api-docs .type-toc-toggle svg { + width: 16px; + height: 16px; + transition: transform 0.2s ease; +} + +body.pf-api-docs .type-toc.collapsed .type-toc-toggle svg { + transform: rotate(-90deg); +} + +body.pf-api-docs .type-toc ul { + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 0.45rem; +} + +body.pf-api-docs .type-toc a { + color: var(--pf-accent); +} + +body.pf-api-docs .type-toc a:hover { + color: #33E0FF; +} + +body.pf-api-docs .type-toc.collapsed ul { + display: none; +} + body.pf-api-docs .type-detail-rail .type-toc { margin: 0; } @@ -1181,6 +1431,37 @@ body.pf-api-docs .type-detail-rail .type-toc ul::-webkit-scrollbar-thumb:hover { color: var(--pf-ink, #0f172a); } +[data-theme="light"] body.pf-api-docs .overview-group-toggle, +[data-theme="light"] body.pf-api-docs .type-toc, +[data-theme="light"] body.pf-api-docs .type-toc-toggle, +[data-theme="light"] body.pf-api-docs .pf-combobox-panel, +[data-theme="light"] body.pf-api-docs .pf-combobox-trigger { + background: var(--pf-card-bg, #ffffff); + border-color: var(--pf-border, rgba(148, 163, 184, 0.45)); + color: var(--pf-ink, #0f172a); +} + +[data-theme="light"] body.pf-api-docs .type-toc-title, +[data-theme="light"] body.pf-api-docs .pf-combobox-trigger::after, +[data-theme="light"] body.pf-api-docs .type-toc-toggle { + color: var(--pf-muted, #64748b); +} + +[data-theme="light"] body.pf-api-docs .overview-group-toggle:hover, +[data-theme="light"] body.pf-api-docs .type-toc-toggle:hover, +[data-theme="light"] body.pf-api-docs .type-toc-toggle:focus-visible, +[data-theme="light"] body.pf-api-docs .pf-combobox-option:hover, +[data-theme="light"] body.pf-api-docs .pf-combobox-option:focus-visible { + background: rgba(14, 116, 144, 0.08); + border-color: rgba(14, 116, 144, 0.28); + color: var(--pf-ink, #0f172a); +} + +[data-theme="light"] body.pf-api-docs .pf-combobox-option.active { + background: rgba(14, 116, 144, 0.1); + color: var(--pf-accent, #0e7490); +} + /* ===== Scrollbar Styling ===== */ .api-sidebar::-webkit-scrollbar, .sidebar-nav::-webkit-scrollbar { diff --git a/Website/themes/intelligencex/theme.manifest.json b/Website/themes/intelligencex/theme.manifest.json index c1c0ac4af..34b588e34 100644 --- a/Website/themes/intelligencex/theme.manifest.json +++ b/Website/themes/intelligencex/theme.manifest.json @@ -29,6 +29,11 @@ ".sidebar-toggle", ".type-item", ".filter-button", + ".pf-combobox", + ".overview-group-toggle", + ".type-toc", + ".type-toc-toggle", + ".member-toggle input", ".member-card", ".member-signature" ]