diff --git a/src/css/custom.css b/src/css/custom.css index d9232e1181..1aefb1bba6 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -510,26 +510,33 @@ hr { background: var(--border-color); } -.navbar__link--active, -.menu__link--active { - color: var(--selected); +.navbar .navbar__link--active { + color: var(--surface-brand-default); + background: var(--surface-brand-grey-strong); } - -.navbar__link--active:hover { - color: var(--selected-hover); +.navbar__link { + position: relative; } -.navbar__link { +.navbar__item.navbar__link:not(.logo-link):not(.navbar-login-btn):hover { position: relative; } -.navbar__item.navbar__link:not(.logo-link):hover { - color: var(--normal-hover); +.navbar__item.navbar__link:not(.logo-link):not(.navbar-login-btn):is(:hover, :focus-visible)::after { position: absolute; + height: 2px; + width: 100%; + content: ""; + background: var(--surface-brand-default); + bottom: -24px; + left: 0; + z-index: 2; + pointer-events: none; } + .navbar__item { - padding: 12px 16px; + padding: 8px; border-radius: 8px; font-family: Inter; font-size: 16px; @@ -664,49 +671,59 @@ hr { } .navbar__items--middle { - background: var(--navbar-items-bg); padding: 0 16px; border-radius: 99px; + display: flex; + gap: 16px; margin: 0 auto; } .navbar__inner { - margin: auto; + background: var(--surface-primary); padding: 16px 24px; display: grid; - grid-template-columns: 324px 1fr auto; + gap: 40px; + grid-template-columns: auto auto 1fr; } @media (max-width: 1191px) { - .navbar__inner { - grid-template-columns: repeat(3, auto); - } .header-github-link { display: none; } + .navbar__inner { + gap: 16px; + } } .navbar__items--right > :last-child { display: flex; align-items: center; } +.navbar__items:first-child { + transform: translateY(-2px); +} + @media (max-width: 996px) { + .navbar__items:first-child { + transform: unset; + } .navbar__items:not(.navbar__items--right) { width: 100%; flex-direction: row-reverse; justify-content: space-between; max-width: unset; + height: 48px; } .navbar__inner { position: relative; - display: flex; padding: 16px 32px; + display: flex; } .navbar__items--right > :last-child { - left: 32px; + left: 0; z-index: 1; - top: calc(100% + 24px); - width: calc(100% - 64px); + top: 100%; + width: calc(100% - 16px); } .navbar__items--right > :last-child > * { @@ -785,6 +802,9 @@ hr { top: 50%; transform: translateY(-50%); } + .logo-link::before { + content: "/" + } .logo-link:hover { transform: translateY(-60%); } @@ -870,7 +890,7 @@ hr { padding: 0; backdrop-filter: blur(7px); background: var(--navbar-gradient); - box-shadow: var(--navbar-shadow); + border-bottom: 1px solid var(--border-color); } @media (max-width: 996px) { diff --git a/src/css/theming.css b/src/css/theming.css index 2e4152f496..443dbf43dd 100644 --- a/src/css/theming.css +++ b/src/css/theming.css @@ -207,6 +207,7 @@ /* For readability concerns, you should choose a lighter palette in dark mode. */ /* PRIMITES WITH THEME DEFINED BY TOGGLER */ html[data-theme="dark"] { + --surface-brand-default: #16a394; --code-with-result: var(--gray-1000); --code-with-result-border: var(--code-bgd-color); --docsearch-searchbox-background: var(--gray-900) !important; @@ -329,6 +330,7 @@ html[data-theme="dark"] { :root[data-theme="light"] { --code-with-result: var(--gray-800); --code-with-result-border: var(--code-with-result); + --surface-brand-default: #16a394; --docsearch-searchbox-background: var(--ifm-color-secondary); --table-of-contents-link: rgb(113, 128, 150); --ifm-background-color: #fff; @@ -507,6 +509,7 @@ html[data-theme="dark"] { :root[data-theme="dark"] { --code-with-result: var(--gray-1000); --code-with-result-border: var(--code-bgd-color); + --surface-brand-default: #16a394; --docsearch-searchbox-background: var(--gray-900) !important; --table-of-contents-link: #a0aec0; --ifm-color-primary: var(--teal-600); diff --git a/src/pages/index.module.scss b/src/pages/index.module.scss index fedebfaec5..cdadb06307 100644 --- a/src/pages/index.module.scss +++ b/src/pages/index.module.scss @@ -6,7 +6,7 @@ .mainHome { overflow: hidden; padding: 0; - @media (max-width: 974px) { + @media (max-width: 996px) { margin-top: 68px; } } @@ -113,14 +113,14 @@ gap: 40px; margin-top: 36px; grid-template-columns: 1fr; - @media (min-width: 974px) { + @media (min-width: 996px) { grid-template-columns: repeat(2, calc(50% - 20px)); } .tabBox { width: 100%; height: 100%; max-width: 100%; - @media (min-width: 974px) { + @media (min-width: 996px) { height: 100%; } .heading { @@ -210,7 +210,7 @@ line-height: 52.8px; letter-spacing: -0.02em; text-align: left; - @media (min-width: 974px) { + @media (min-width: 996px) { font-size: 48px; } } @@ -223,7 +223,7 @@ letter-spacing: -2%; margin: 40px 0 24px; - @media (min-width: 974px) { + @media (min-width: 996px) { margin: 80px 0 24px; font-size: 36px; } @@ -243,7 +243,7 @@ gap: 24px; flex-wrap: wrap; display: grid; - @media (min-width: 974px) { + @media (min-width: 996px) { grid-template-columns: repeat(3, 1fr); } } @@ -264,7 +264,7 @@ display: grid; gap: 40px; grid-template-columns: 1fr; - @media (min-width: 974px) { + @media (min-width: 996px) { grid-template-columns: repeat(3, 1fr); } .howItem { @@ -301,7 +301,7 @@ line-height: 140%; letter-spacing: 0%; margin: 16px 0 0; - @media (min-width: 974px) { + @media (min-width: 996px) { height: 98px; } } @@ -371,7 +371,7 @@ display: grid; gap: 40px; grid-template-columns: 1fr; - @media (min-width: 974px) { + @media (min-width: 996px) { grid-template-columns: repeat(3, 1fr); } .helpItem { @@ -441,7 +441,7 @@ max-width: 1272px; text-align: left; padding: 40px 16px; - @media (min-width: 974px) { + @media (min-width: 996px) { grid-template-columns: repeat(2, 1fr); padding: 80px 16px; } @@ -469,7 +469,7 @@ justify-content: left; align-items: center; gap: 24px; - @media (min-width: 974px) { + @media (min-width: 996px) { justify-content: center; } .link { diff --git a/src/theme/Navbar/Content/index.tsx b/src/theme/Navbar/Content/index.tsx index 4734c8d6d0..84dd491c34 100644 --- a/src/theme/Navbar/Content/index.tsx +++ b/src/theme/Navbar/Content/index.tsx @@ -72,7 +72,8 @@ export default function NavbarContent(): ReactNode { <> {!mobileSidebar.disabled && } - /docs + / + docs } middle={ diff --git a/src/theme/Navbar/Content/styles.module.css b/src/theme/Navbar/Content/styles.module.css index 4c9471e109..17d7fe92f8 100644 --- a/src/theme/Navbar/Content/styles.module.css +++ b/src/theme/Navbar/Content/styles.module.css @@ -5,4 +5,13 @@ Hide color mode toggle in small viewports .colorModeToggle { display: none; } + .separator { + display: none; + } } + +.separator { + color: var(--border-color); + font-size: 28px; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/theme/SearchBar/index.tsx b/src/theme/SearchBar/index.tsx index 9813510291..6d9c29d100 100644 --- a/src/theme/SearchBar/index.tsx +++ b/src/theme/SearchBar/index.tsx @@ -1,17 +1,16 @@ -import React, { useCallback, useMemo, useRef, useState, type ReactNode } from "react"; -import { createPortal } from "react-dom"; import { DocSearchButton, useDocSearchKeyboardEvents } from "@docsearch/react"; import Head from "@docusaurus/Head"; import Link from "@docusaurus/Link"; import { useHistory } from "@docusaurus/router"; import { isRegexpStringMatch, useSearchLinkCreator } from "@docusaurus/theme-common"; -import { - useAlgoliaContextualFacetFilters, - useSearchResultUrlProcessor, -} from "@docusaurus/theme-search-algolia/client"; +import { useAlgoliaContextualFacetFilters, useSearchResultUrlProcessor } from "@docusaurus/theme-search-algolia/client"; import Translate from "@docusaurus/Translate"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import translations from "@theme/SearchTranslations"; +import React, { useCallback, useMemo, useRef, useState } from "react"; +import type { ReactNode } from "react"; +import { createPortal } from "react-dom"; + import type { InternalDocSearchHit, DocSearchModal as DocSearchModalType, @@ -53,7 +52,7 @@ const kapaStyles = ` width: fit-content; border: none; background: transparent; font-size: 14px; - color: var(--docsearch-highlight-color); + color: var(--surface-brand-default); cursor: pointer; transition: all 0.2s ease; position: relative; @@ -113,6 +112,28 @@ const kapaStyles = ` } /* Make sure the Kapa wrapper appears at the top of the dropdown */ + +.DocSearch-Modal:not(:has(.DocSearch-Dropdown)) .DocSearch-Footer { + margin-top: 200px; + position: relative; +} +.DocSearch-Modal:not(:has(.DocSearch-Dropdown)) .DocSearch-Footer::before { + content: "No recent searches"; + position: absolute; + top: -100px; + color: var(--tertiary-font-color); + left: 50%; + transform: translateX(-50%); +} +.DocSearch-Modal { + --docsearch-highlight-color: var(--surface-brand-default) !important; + --docsearch-soft-primary-color: transparent !important; + --docsearch-hit-highlight-color:rgba(0, 150, 136, 0.1) !important; + background: var(--surface-primary); +} +.DocSearch-Hit-source { + background: var(--surface-primary); +} .DocSearch-Dropdown { display: flex; flex-direction: column; @@ -127,6 +148,50 @@ const kapaStyles = ` flex-direction: column; padding: 0 1rem 1rem; } +.DocSearch-SearchBar { + padding: var(--docsearch-spacing) var(--docsearch-spacing) 0; +} +.DocSearch-Button { + align-items: center; + background: var(--docsearch-searchbox-background); + border: 0; + border-radius: 40px; + color: var(--tertiary-font-color); + cursor: pointer; + display: flex; + font-weight: 500; + height: 36px; + justify-content: space-between; + margin: 0 0 0 16px; + padding: 0 8px; + -webkit-user-select: none; + user-select: none; +} +.DocSearch-Button:hover { + background: var(--surface-primary); + outline: 1px solid var(--border-color); +} +.DocSearch-Button kbd { + background: var(--white-color); + color: var(--gray-800); + box-shadow: 0px 1px 1px rgba(47, 55, 71, 0.6), 0px 1px 4px rgba(47, 55, 71, 0.2); + border-bottom: 1px solid rgba(47, 55, 71, 0.2); + border-radius: 4px; + padding: 0; + vertical-align: baseline; + font-size: 14px !important; + font-family: "JetBrainsMono" !important; +} + .DocSearch-Form { + border: 2px solid var(--surface-brand-default); + border-radius: 4px; + } + .DocSearch-LoadingIndicator svg, .DocSearch-MagnifierLabel svg { + color: var(--surface-brand-default); + } + .DocSearch-Hit-path { + color: var(--tertiary-font-color); + } `; let DocSearchModal: typeof DocSearchModalType | null = null;