diff --git a/src/components/AlgoliaSiteSearch/index.tsx b/src/components/AlgoliaSiteSearch/index.tsx index 0ddf9557..82a998a4 100644 --- a/src/components/AlgoliaSiteSearch/index.tsx +++ b/src/components/AlgoliaSiteSearch/index.tsx @@ -93,13 +93,14 @@ export default function AlgoliaSiteSearch(): React.ReactElement | null { const isConfigured = Boolean(applicationId && apiKey && indexName); useEffect(() => { + ensureSiteSearchStylesheet(); + if (!isConfigured) { return; } let cancelled = false; - ensureSiteSearchStylesheet(); loadSiteSearchScript() .then(() => { if (cancelled || !window.SiteSearch?.init) { @@ -139,7 +140,36 @@ export default function AlgoliaSiteSearch(): React.ReactElement | null { }, [apiKey, applicationId, indexName, isConfigured]); if (!isConfigured) { - return null; + return ( +
+ +
+ ); } return ( diff --git a/src/css/custom.css b/src/css/custom.css index 846de5f2..7c806ce2 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -443,6 +443,7 @@ html[data-theme="dark"] article blockquote { margin: 0; height: 60px; display: flex; + width: 100%; } .navbar__brand { @@ -501,6 +502,7 @@ html[data-theme="dark"] article blockquote { gap: 0.3rem !important; margin: 0 !important; padding: 0 !important; + min-width: 0; } .mb-10.text-center>p.mx-auto.max-w-3xl { @@ -527,12 +529,14 @@ html[data-theme="dark"] article blockquote { padding: 0.3rem 0.5rem; font-size: 0.85rem; line-height: 1.2; + white-space: nowrap; } .navbar__link { display: flex; align-items: center; gap: 0.5rem; + white-space: nowrap; } /* Fix icon alignment in navbar */ @@ -746,14 +750,20 @@ body { } /* ===== SECTION 11: CRITICAL FIX: TABLET/IPAD NAVBAR BEHAVIOR ===== */ -@media screen and (max-width: 996px) { +@media screen and (max-width: 1200px) { /* Hide TOP navbar items on mobile (not sidebar) */ /* - * Hide all navbar items on small screens except the toggle, brand, - * and the Clerk auth control. + * Hide top-level navbar items before they collide. Docusaurus' default + * mobile breakpoint is 996px, but this navbar has enough links to overflow + * on tablets and smaller laptops. */ - .navbar__items .navbar__item:not(.navbar__toggle):not(.navbar__brand):not( :has(#firebase-auth-github-navbar)) { + .navbar__inner>.navbar__items>.navbar__item:not(.navbar__toggle):not(:has(#clerk-auth-navbar)) { + display: none !important; + } + + .navbar__items--right>.navbar__item:not(:has(#clerk-auth-navbar)), + .navbar__items--right .colorModeToggle { display: none !important; } @@ -778,11 +788,13 @@ body { max-width: 100% !important; padding: 0 !important; width: 100% !important; + gap: 0.5rem !important; } /* Logo and brand adjustments */ .navbar__brand { - margin-right: 1.5rem !important; + min-width: 0 !important; + margin-right: auto !important; } .navbar__logo { @@ -791,11 +803,16 @@ body { .navbar__title { font-size: 1rem !important; + overflow: hidden !important; + text-overflow: ellipsis !important; } /* Ensure sidebar toggle is always visible */ .navbar__toggle { - display: block !important; + display: inline-flex !important; + align-items: center !important; + justify-content: center !important; + flex: 0 0 auto !important; margin-right: 0.5rem !important; } @@ -2773,6 +2790,93 @@ html[data-theme="dark"] .blog-post-page article header h2[itemprop="headline"] { END SECTION 15 ===================================================== */ +/* ===== RESPONSIVE NAVBAR OVERFLOW FIX ===== */ +@media screen and (min-width: 1401px) { + .navbar__inner { + gap: 0.5rem !important; + } + + .navbar__items:not(.navbar__items--right) { + flex: 1 1 auto !important; + min-width: 0 !important; + } + + .navbar__items--right { + flex: 0 0 auto !important; + } + + .navbar__items>.navbar__item { + flex: 0 0 auto !important; + } +} + +@media screen and (max-width: 1400px) { + .navbar, + .navbar .navbar__inner { + width: 100% !important; + max-width: 100% !important; + overflow: visible !important; + } + + .navbar .navbar__inner { + display: flex !important; + align-items: center !important; + justify-content: flex-start !important; + gap: 0.5rem !important; + } + + .navbar .navbar__items { + min-width: 0 !important; + } + + .navbar .navbar__items:not(.navbar__items--right) { + flex: 1 1 auto !important; + overflow: hidden !important; + } + + .navbar .navbar__items--right { + flex: 0 0 auto !important; + margin-left: auto !important; + } + + .navbar .navbar__toggle { + display: inline-flex !important; + align-items: center !important; + justify-content: center !important; + flex: 0 0 40px !important; + width: 40px !important; + height: 40px !important; + } + + .navbar .navbar__brand { + flex: 1 1 auto !important; + min-width: 0 !important; + max-width: 100% !important; + margin-right: 0 !important; + overflow: hidden !important; + } + + .navbar .navbar__title { + min-width: 0 !important; + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + } + + .navbar__inner>.navbar__items>.navbar__item:not(.navbar__toggle), + .navbar__items--right>.navbar__item, + .navbar__items--right .colorModeToggle { + display: none !important; + } + + .navbar-sidebar .navbar__item, + .navbar-sidebar .navbar__link, + .navbar-sidebar .dropdown { + display: block !important; + white-space: normal !important; + } +} + /* ===== MOBILE TOP-GAP FIX ===== */ @media screen and (max-width: 996px) { @@ -2950,9 +3054,10 @@ main[class*='docMainContainer_'] { .theme-doc-sidebar-container, .menu--responsive, div[class*='sidebarViewport_'] { - z-index: 9999 !important; + z-index: 9999 !important; } + /* Leaderboard Pagination Button Icon Visibility Fix */ .pagination-btn { display: flex !important; @@ -2987,4 +3092,4 @@ div[class*='sidebarViewport_'] { .pagination-btn.disabled { opacity: 0.4 !important; cursor: not-allowed !important; -} \ No newline at end of file +}