From 052c44c361642aa1fcd32fc6ebbbd1e08dd22dc7 Mon Sep 17 00:00:00 2001 From: Dmytro Steblyna Date: Fri, 26 Sep 2025 14:08:31 +0700 Subject: [PATCH 1/3] YNU-168: introduce a dark theme --- docusaurus.config.ts | 12 +- src/components/HomepageFeatures/index.tsx | 25 +- src/css/custom.css | 232 ++++++++++++++++-- static/img/docusaurus.png | 1 - static/img/icons/clearnode.png | Bin 2020 -> 0 bytes static/img/logo.png | Bin 6346 -> 0 bytes static/img/themes/dark/icons/build.png | Bin 0 -> 1251 bytes static/img/themes/dark/icons/clearnode.png | Bin 0 -> 1490 bytes static/img/themes/dark/icons/community.png | Bin 0 -> 1278 bytes static/img/themes/dark/icons/grants.png | Bin 0 -> 971 bytes static/img/themes/dark/icons/learn.png | Bin 0 -> 1270 bytes static/img/themes/dark/logo.svg | 13 + static/img/{ => themes/light}/icons/build.png | Bin static/img/themes/light/icons/clearnode.png | Bin 0 -> 2287 bytes .../{ => themes/light}/icons/community.png | Bin .../img/{ => themes/light}/icons/grants.png | Bin static/img/{ => themes/light}/icons/learn.png | Bin static/img/{ => themes/light}/logo.svg | 0 static/img/undraw_docusaurus_mountain.svg | 6 - static/img/undraw_docusaurus_react.svg | 8 - static/img/undraw_docusaurus_tree.svg | 8 - 21 files changed, 257 insertions(+), 48 deletions(-) delete mode 100644 static/img/docusaurus.png delete mode 100644 static/img/icons/clearnode.png delete mode 100644 static/img/logo.png create mode 100644 static/img/themes/dark/icons/build.png create mode 100644 static/img/themes/dark/icons/clearnode.png create mode 100644 static/img/themes/dark/icons/community.png create mode 100644 static/img/themes/dark/icons/grants.png create mode 100644 static/img/themes/dark/icons/learn.png create mode 100644 static/img/themes/dark/logo.svg rename static/img/{ => themes/light}/icons/build.png (100%) create mode 100644 static/img/themes/light/icons/clearnode.png rename static/img/{ => themes/light}/icons/community.png (100%) rename static/img/{ => themes/light}/icons/grants.png (100%) rename static/img/{ => themes/light}/icons/learn.png (100%) rename static/img/{ => themes/light}/logo.svg (100%) delete mode 100644 static/img/undraw_docusaurus_mountain.svg delete mode 100644 static/img/undraw_docusaurus_react.svg delete mode 100644 static/img/undraw_docusaurus_tree.svg diff --git a/docusaurus.config.ts b/docusaurus.config.ts index cdd68af..e13d761 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -78,13 +78,15 @@ const config: Config = { image: 'img/docusaurus-social-card.jpg', colorMode: { defaultMode: 'light', - disableSwitch: true, + disableSwitch: false, + respectPrefersColorScheme: true, }, navbar: { title: '', logo: { alt: 'Yellow Network', - src: 'img/logo.svg', + src: 'img/themes/light/logo.svg', + srcDark: 'img/themes/dark/logo.svg', }, items: [ { @@ -119,8 +121,9 @@ const config: Config = { }, { href: 'https://github.com/layer-3', - label: 'GitHub', position: 'right', + className: 'header-github-link', + 'aria-label': 'GitHub repository', }, ], }, @@ -132,7 +135,8 @@ const config: Config = { items: [ { html: ` - Yellow Network + Yellow Network + `, }, ], diff --git a/src/components/HomepageFeatures/index.tsx b/src/components/HomepageFeatures/index.tsx index 2758ef8..1a696b0 100644 --- a/src/components/HomepageFeatures/index.tsx +++ b/src/components/HomepageFeatures/index.tsx @@ -2,11 +2,14 @@ import type {ReactNode} from 'react'; import clsx from 'clsx'; import Link from '@docusaurus/Link'; import Heading from '@theme/Heading'; +import {useThemeConfig} from '@docusaurus/theme-common'; +import {useColorMode} from '@docusaurus/theme-common'; import styles from './styles.module.css'; type FeatureItem = { title: string; imageSrc: string; + imageSrcDark: string; description: ReactNode; link: string; isExternal?: boolean; @@ -15,7 +18,8 @@ type FeatureItem = { const FeatureList: FeatureItem[] = [ { title: 'Learn the Basics', - imageSrc: require('@site/static/img/icons/learn.png').default, + imageSrc: require('@site/static/img/themes/light/icons/learn.png').default, + imageSrcDark: require('@site/static/img/themes/dark/icons/learn.png').default, description: ( <> Understand the fundamentals of Yellow Network, its architecture, @@ -26,7 +30,8 @@ const FeatureList: FeatureItem[] = [ }, { title: 'Build a Yellow App', - imageSrc: require('@site/static/img/icons/build.png').default, + imageSrc: require('@site/static/img/themes/light/icons/build.png').default, + imageSrcDark: require('@site/static/img/themes/dark/icons/build.png').default, description: ( <> Create decentralized applications using Yellow SDK with real-time @@ -37,7 +42,8 @@ const FeatureList: FeatureItem[] = [ }, { title: 'Run a Clearnode', - imageSrc: require('@site/static/img/icons/clearnode.png').default, + imageSrc: require('@site/static/img/themes/light/icons/clearnode.png').default, + imageSrcDark: require('@site/static/img/themes/dark/icons/clearnode.png').default, description: ( <> Set up and operate a clearnode to participate in the network, @@ -48,7 +54,8 @@ const FeatureList: FeatureItem[] = [ }, { title: 'Join the Community', - imageSrc: require('@site/static/img/icons/community.png').default, + imageSrc: require('@site/static/img/themes/light/icons/community.png').default, + imageSrcDark: require('@site/static/img/themes/dark/icons/community.png').default, description: ( <> Connect with developers, traders, and node operators in our @@ -60,7 +67,8 @@ const FeatureList: FeatureItem[] = [ }, { title: 'Apply for Grants', - imageSrc: require('@site/static/img/icons/grants.png').default, + imageSrc: require('@site/static/img/themes/light/icons/grants.png').default, + imageSrcDark: require('@site/static/img/themes/dark/icons/grants.png').default, description: ( <> Get funding support for your Yellow Network project through @@ -72,7 +80,10 @@ const FeatureList: FeatureItem[] = [ }, ]; -function Feature({title, imageSrc, description, link, isExternal}: FeatureItem) { +function Feature({title, imageSrc, imageSrcDark, description, link, isExternal}: FeatureItem) { + const {colorMode} = useColorMode(); + const currentImageSrc = colorMode === 'dark' ? imageSrcDark : imageSrc; + const linkProps = isExternal ? { href: link, target: '_blank', rel: 'noopener noreferrer' } : { to: link }; @@ -85,7 +96,7 @@ function Feature({title, imageSrc, description, link, isExternal}: FeatureItem) >
- {title} + {title}
{title}

{description}

diff --git a/src/css/custom.css b/src/css/custom.css index 959a9de..201867b 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -13,13 +13,13 @@ /* You can override the default Infima variables here. */ :root { - --ifm-color-primary: rgba(9, 9, 9, 0.9); - --ifm-color-primary-dark: rgba(7, 7, 7, 0.9); - --ifm-color-primary-darker: rgba(6, 6, 6, 0.9); - --ifm-color-primary-darkest: rgba(4, 4, 4, 0.9); - --ifm-color-primary-light: rgba(11, 11, 11, 0.9); - --ifm-color-primary-lighter: rgba(12, 12, 12, 0.9); - --ifm-color-primary-lightest: rgba(14, 14, 14, 0.9); + --ifm-color-primary: #1847CC; + --ifm-color-primary-dark: #1640B8; + --ifm-color-primary-darker: #143DB0; + --ifm-color-primary-darkest: #113399; + --ifm-color-primary-light: #1F4FDE; + --ifm-color-primary-lighter: #2052E6; + --ifm-color-primary-lightest: #335CFF; --ifm-code-font-size: 95%; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); --ifm-font-family-base: 'Poppins', system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; @@ -27,13 +27,13 @@ /* For readability concerns, you should choose a lighter palette in dark mode. */ [data-theme='dark'] { - --ifm-color-primary: #25c2a0; - --ifm-color-primary-dark: #21af90; - --ifm-color-primary-darker: #1fa588; - --ifm-color-primary-darkest: #1a8870; - --ifm-color-primary-light: #29d5b0; - --ifm-color-primary-lighter: #32d8b4; - --ifm-color-primary-lightest: #4fddbf; + --ifm-color-primary: #FDE058; + --ifm-color-primary-dark: #FDD73A; + --ifm-color-primary-darker: #FDD12C; + --ifm-color-primary-darkest: #FCC500; + --ifm-color-primary-light: #FEE976; + --ifm-color-primary-lighter: #FEEF84; + --ifm-color-primary-lightest: #FEF5B0; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); } @@ -259,6 +259,12 @@ a.menu__link.menu__link--sublist.menu__link--active:hover { padding-bottom: 3rem !important; } +[data-theme='dark'] .footer { + background-color: #262626 !important; + color: #ffffff; + border-top: 1px solid #2e2e32; +} + .footer__title { color: #000000; font-family: 'Poppins', sans-serif !important; @@ -270,10 +276,18 @@ a.menu__link.menu__link--sublist.menu__link--active:hover { vertical-align: middle !important; } +[data-theme='dark'] .footer__title { + color: #ffffff; +} + .footer__item { color: #000000; } +[data-theme='dark'] .footer__item { + color: #ffffff; +} + .footer__link-item { color: #000000; font-family: 'Poppins', sans-serif !important; @@ -285,10 +299,18 @@ a.menu__link.menu__link--sublist.menu__link--active:hover { vertical-align: middle !important; } +[data-theme='dark'] .footer__link-item { + color: #ffffff; +} + .footer__copyright { color: #000000; } +[data-theme='dark'] .footer__copyright { + color: #ffffff !important; +} + /* Footer 4-column layout */ .footer__links { display: grid; @@ -397,3 +419,185 @@ a.menu__link.menu__link--sublist.menu__link--active:hover { vertical-align: middle !important; } +.hero { + background-color: #222222 !important; +} + +[data-theme='dark'] .hero { + background-color: #090909 !important; +} + +[data-theme='dark'] .hero__subtitle { + color: #FFFFFF !important; +} + +.search-bar-container, +.search-bar-container input, +.navbar__search input, +input[type="search"], +.navbar input[placeholder*="Search"], +[class*="searchBox"] input { + border-radius: 8px !important; + height: 40px !important; + min-height: 40px !important; +} + +.footer-logo-light { + display: block !important; +} + +.footer-logo-dark { + display: none !important; +} + +[data-theme='dark'] .footer-logo-light { + display: none !important; +} + +[data-theme='dark'] .footer-logo-dark { + display: block !important; +} + +.navbar__item .navbar__link:not(.header-github-link), +.navbar__link:not(.header-github-link) { + color: #585858 !important; +} + +.navbar__item .navbar__link:hover:not(.header-github-link), +.navbar__link:hover:not(.header-github-link) { + color: #090909 !important; + background: transparent !important; + background-color: transparent !important; +} + +[data-theme='dark'] .navbar__item .navbar__link, +[data-theme='dark'] .navbar__link { + color: #BBBBBB !important; +} + +[data-theme='dark'] .navbar__item .navbar__link:hover, +[data-theme='dark'] .navbar__link:hover { + color: #D2D2D2 !important; + background: transparent !important; + background-color: transparent !important; +} + +.header-github-link:before { + content: ''; + width: 24px; + height: 24px; + display: flex; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%238E8E8E' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat; +} + +[data-theme='dark'] .header-github-link:before { + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23BBBBBB' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat; +} + +.header-github-link:hover:before { + opacity: 0.8; +} + +.navbar__item .navbar__link[class*="colorModeToggle"], +.navbar__item button, +.navbar__item .navbar__link.header-github-link, +[class*="searchBox"] button, +[class*="colorModeToggle"] { + width: 24px !important; + height: 24px !important; + padding: 0 !important; + margin: 0 8px !important; +} + +[class*="toggleIcon"] { + color: #FFFFFF !important; +} + +[data-theme='dark'] [class*="toggleIcon"] { + color: #FFFFFF !important; +} + +.navbar svg[role="img"], +.navbar path, +[class*="search"] svg, +[class*="search"] path, +.navbar button svg, +.navbar button path, +input[type="search"] ~ svg, +input[type="search"] ~ svg path, +button[title*="Search"] svg, +button[title*="Search"] path, +.navbar__item svg, +.navbar__item path { + color: #8E8E8E !important; + fill: #8E8E8E !important; + stroke: #8E8E8E !important; + width: 20px !important; + height: 20px !important; +} + +[data-theme='dark'] .navbar svg[role="img"], +[data-theme='dark'] .navbar path, +[data-theme='dark'] [class*="search"] svg, +[data-theme='dark'] [class*="search"] path, +[data-theme='dark'] .navbar button svg, +[data-theme='dark'] .navbar button path, +[data-theme='dark'] input[type="search"] ~ svg, +[data-theme='dark'] input[type="search"] ~ svg path, +[data-theme='dark'] button[title*="Search"] svg, +[data-theme='dark'] button[title*="Search"] path, +[data-theme='dark'] .navbar__item svg, +[data-theme='dark'] .navbar__item path { + color: #BBBBBB !important; + fill: #BBBBBB !important; + stroke: #BBBBBB !important; +} + +[data-theme='dark'] [class*="featureSquare"] { + background-color: #6A410E !important; +} + +[data-theme='dark'] [class*="featureSquare"]::after { + background-color: #FCD002 !important; +} + +[data-theme='dark'] [class*="featureTitle"] { + color: #FFFFFF !important; +} + +[data-theme='dark'] [class*="featureDescription"] { + color: #D2D2D2 !important; +} + +[data-theme='dark'] .footer__link-item { + color: #828282 !important; +} + +[data-theme='dark'] .footer__copyright { + color: #6D6D6D !important; +} + +.theme-admonition.theme-admonition-info { + background-color: #DBE9FE !important; + border-left: 3px solid #60A5FA !important; +} + +[data-theme='dark'] .theme-admonition.theme-admonition-info { + background-color: #182B6A !important; + border-left: 3px solid #1656E6 !important; +} + +.breadcrumbs__item--active, +.breadcrumbs__item--active .breadcrumbs__link { + background: none !important; + background-color: transparent !important; + border-radius: 0 !important; +} + +[data-theme='dark'] .breadcrumbs__item--active, +[data-theme='dark'] .breadcrumbs__item--active .breadcrumbs__link { + background: none !important; + background-color: transparent !important; + border-radius: 0 !important; +} + diff --git a/static/img/docusaurus.png b/static/img/docusaurus.png deleted file mode 100644 index eb0ef9a..0000000 --- a/static/img/docusaurus.png +++ /dev/null @@ -1 +0,0 @@ -Image placeholder diff --git a/static/img/icons/clearnode.png b/static/img/icons/clearnode.png deleted file mode 100644 index db8fc9f0f73985735292f6466933242454a77d2d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2020 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 N002ovPDHLkV1mQrTgLzZ literal 0 HcmV?d00001 diff --git a/static/img/themes/dark/icons/clearnode.png b/static/img/themes/dark/icons/clearnode.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c9d72a95698b916196f6bc64f498f60c60e4df GIT binary patch literal 1490 zcmV;@1ugoCP)P~!NaOEs=r!U7zC|9N zywuTa!438fWo&6Au8s!b_4cWuC4!)5#?Vp$;9qT9TIXcoyK*kYQYNmOsk_e}nKoR=r6$UCabfw}%n=fxYghAL4yN!+0SVy^#5XJ+`ykEL{y zzA)Fla{WP9#s3>RFJGu4rHb1tP``w8iu4fEiuB61CJ#=M{-#P4O_B%v3a914rO)y2 zXVU4d9I3o_6ZMhi1i|Ys#g-`6*yb*yop}vQjB`u8TT%QPA{dt5tmq(H{_{-~#=9lA zQ~?C(+6!%cpmT%q&aKBwlc5SAxIk8DZ$*Wau5Ny1Gbe5xT)L+3E<~@4KQUG9oN~RU z3d9NTn0`_0i+7o-ng?8GZW2$cWy*AkG7VKCN>nOBYB6;fSrBWRD3|i!JF1AQZ-q2= z(uqPkp3@3tyF}TmIFaoj`TvVnK*&0Ck10aP2vWp89YuNR33GHPh&UpIb(8f{ZIBN5 zx5_$l48db8GWD0se=F3vMKB=@jRhm6Xi$&ukhJwAk!2i0AItLn+M;yAkd~q*qn-`w zkULSi5}apzA}vMg_ZmSt*F-%K=&bT%8g2d3s$`UPXe{EVIFM~@Q?nziUZD^s%0kaK z0r-s@6orsP|9gsEM)dCkr7huqD1=$ETl#$*%eeIW(KRjJ z1TjC2F+TB5InzejSjrjp(y$WBrmW~E=pq57G{>D;LBH~-x2ch~wp(Q#we^{nhLlhH z6o!<5w^g!saG{s*ni${qyV!x2c%5;KHq_cj4_CE*l5%%gbMkX}|DZg$4bFcl zm;%q7NdnzMz;Ce99B4m%F#r6`Mwj%rj8u$6XhgVXip`eY@)UhUK_|y)FQl=t2j8H z){t$tmT6D&)BHU{rNj;nH~uu&<#ZEvMGLf+0CrFB;=PBwEVkazQHi>NTEWCwoY#Y3W)Ls4siPNAy|Po%Bt%S5>wq5bI;wH5>$ z$U;UmJQHONlYf3itp)m3%fA*Wso?6kDrob3idqYT9i%ZBEqKZ3m@@5&y!(W zp5QkTeg3u|IAnuyK1Hns!SK{7YB3-y*VnAIy&<}FA=1_5$TvR z+G4wSnw{beO@B sE&k+vN)X%<6H|X`?eX}W_Zti1D?37QwiCF>X#fBK07*qoM6N<$g6-R literal 0 HcmV?d00001 diff --git a/static/img/themes/dark/icons/community.png b/static/img/themes/dark/icons/community.png new file mode 100644 index 0000000000000000000000000000000000000000..bd50c7a9a3f3cb0a68b44558ee3f18082eff2ff3 GIT binary patch literal 1278 zcmV-CKvIFO1G|Gi+R=Gn$engij|+G9 zHzSxqUU{{r$7;0)(UBkvdItb7?$?zF}4E@>o2+r?a`tovms54_8rx?OHZg*l-S zaK@=9pK%y=2Syo1qZr6>A=L9oxN_yA8x=gN&s}K}+nf#v`#Oy2kYPW`3UW)D141X) z0lAeRTTx+(Pcg_|@UK8!O<@cbW~?7K`sCxR$ZGz?p8k%k}s+TEsh<&P`- zYaYG=`s7Nbls|Wic1=?PI%kikNEK*9yMAqGN;rkj6rFk)(B8eGy^5v+{AFL(Ck}Z; z-qTcoJS_|j1b(`Ojw@T50`TXq5YhKqkf)lV%#`q?&xHD)6i-cQ-#wTT29g}NhT@U3 zJ+eEEA1FWEiEn}WhT_=?ZP#?<$dMz53|>;_Hg6oaZTq(s{zIIm)$7s~4yM@-z3z(Y z)q1jP=ouwt?$ra+UJ9(U8wx(BFy>amqTo}5e`qlQIqS+-$^kcoG;9eYAx|hbErka1 z0a1%Z=Flke#JRa|CiFehQG>%0IXY%2V@4SK`erB{?pxg98FFq;%+pFXHu5He?y35| zFEoNQ^Rp(OI(JL*87o&_VWs#?Oi$BrRK7H>Laq>X0S=!W0c zL)=AnAUW!X@TTz`kdq!>XDq32ib>Xd4Ag}JV(iozillwYA>BfHJy4je2HHi|r80U- zUY~&)3R4B@J_qV3B`ZTA8w$Br6s939khfBcjzvu&_e_aEb`Z~c^pfO;xgd%Lxt@22 zC0?^bFx&k(boc&R zEMj+7_-T_1LzzInLo~CZ7+NJZ$Op%53?%|Tve(Fm9jq7LY1$mTaY|&YS+!o!y@r%R zblMzzytxz>8Y966w@WiPZ4Tq4^Zm1tEZ!)=aoQ)+QPWG>9FGV?-iy{I5UA7UFf5&~ zA%7m^-@8|ORZ96Qr`LU-B35H%jGQ(H-J)z2dOaxG=?;BB=YXlRxS(@1D@8k+2%>sj zQ|fiuCAb!Z1|Jh3FRG%!A^Tz$0~dYB$CXW&&{j~w&_E!2<6-~}vM**R0w@o!C+&w{ z|7)5q>X>3mW!-|&yU zfuuPsrM{)ero7Y}t(W3m+LtM&Xsl!yHHB2YMEUpdT6hZc_~#~5W}oHCbNQCakdm3& oP*|_j5yUsIed}Dxx_dbM1(i|1Ll?lSumAu607*qoM6N<$f)J2NDF6Tf literal 0 HcmV?d00001 diff --git a/static/img/themes/dark/icons/grants.png b/static/img/themes/dark/icons/grants.png new file mode 100644 index 0000000000000000000000000000000000000000..7ea7e23bcb9199935e65da1db3f22de03014da32 GIT binary patch literal 971 zcmV;+12p`JP)9>S;MdwC`CDyexsn2vcDlM^^^jE(y#q zRqks3yxW|r=TsRr&F>%r(-Vj~4-sWfEWs07-+`&GIxm;<5aWK7&4TX{Jh6*IGwd27 z+e)_!k>!mSk)%MHcX!qhiFIpgBFk;}Ce^r#HtD+t?AyRDiAdU7Uye~ z2tE>Nzq&U`3WT$i5r|syM|<}AHAL&8?%t$4#He1h(jLJsS6QHk*!S*D$^vbOH1mQ_ zp+il#p%be2?a$-YR}e-K`Q;RZQ$stm9b|&L;?O#rei$+ki(!$pq~&?ZKx! z+EP0{oNnJ|=TlE#`OtXKC2+=rply$7O9_6|@H$Nwww&)UocHy_&>{9OFy8kw_`PTe zaX9zNl3yrx;y6dR3>zwRlEq5eu8X)}R}4lRa!r+ut1+@jrZ=uRaST_E!VOGEV5fJlDICpgHwXK0*&ly7VV5Tb{5{*5(NMEnIf5VviQ@9bwlE#W z7rW_8uzr|=>A17&truLrn1VD=Fl}4jECc@6T@7zUAO;bLK?GtDffzy~iZ#&ZYg{N8 zKa3k2`Y;DJy?1AWL#{Dl0$k6)1!yAM66Cnb5MvO57(^fj5r{zqVi18CL?8wch(QEm z5P=v(AO;bLA=Fu2=(ztgHuTtTAKOSLIOv>p@EJvjKcqA^B}{+}F$NKcK?GtDffz&} th7|rh&hdOdywjEvre!aOtpq_xiQgc9CM-SdVQv5b002ovPDHLkV1mi7u9E-& literal 0 HcmV?d00001 diff --git a/static/img/themes/dark/icons/learn.png b/static/img/themes/dark/icons/learn.png new file mode 100644 index 0000000000000000000000000000000000000000..ac246b7c4af46fc9ef37546601cbe1b5df37ddd3 GIT binary patch literal 1270 zcmVpp}zaq)$xV{pgXJ z)`ratdn-zbQfbZPxki4r7-@RWCLvEnIl#C`^~im>yoRGixJVV{1kXjPXz`&xvF&#txD7LA)V;N-#!e!_I~W|L@Mn?}vUjJioPJL*Z1`uJ82RuG*Dt z#L?Fyt8(IU_ zkT;5+&MS zsQGWn)9q;ldzSBu(7yw5RJ1V416zJX1K+$B_nv`GjUZA~GkZZ1pdYpklYC3%_%5Vf zQ3O!}(fAVPo*z^WsqUz`SZaZu>k90h2Nm*yIB3{Nev7^~lolC4h9TWeG z%JY(mkJ^BY73e1uAJq{i#xU`V3dB`rP;hy{*Ue2q9w>rXfu!L)`Qq3FHbPp|6y)4z z{Gi--=rKFt-j7OpPTmP=yMy1KNq#kPbQFv5vRY*Q1^vPqQolgQHZcdMz7wa!TJW`y zw)_jU^2C4zw_Vm`%b{V7VALHg1mvaPEtLZDDxTvDWd`~Q5M~r=0f; zjC6Zb+NrVRo)jQXTikp0SVOL$lk90i-_3PYv?dUCs9?4yA#7j1rZr*>`v#q;#q&WO zty2CCt(gFkqG#GR-$$kFqd43i(%fpA2=u14E^)lUMo9mPgkA)B)M`0fG&{2}c$%#u zQiDWZ1lfDc96OVOf6wG-Pmh};1@D(bo<`I{-Rlv8&iXzT2^ z$vnsbzO$_Y^5*a$b)6Z!C)JdL5s|9Ed_@HEbytgsGpMkhB96~fOdwx>wTL)_3MXw2 zmKG?+<~>2f{2^}WrZjZ){8-Hx+~-x3wvuCQjuI#(+Gp9|NApF_BF))2{4Xf&K^FlX zXVEpD;sTMpWn7$76H_<|q;L{Q;Utj4NuV_Y{dCA9GJFtxRDfS1ZPp-8)Ssrv0s0Ss gjsMw|{Ay^(Z<{}Cs|Lli+yDRo07*qoM6N<$f+DA5od5s; literal 0 HcmV?d00001 diff --git a/static/img/themes/dark/logo.svg b/static/img/themes/dark/logo.svg new file mode 100644 index 0000000..87eb831 --- /dev/null +++ b/static/img/themes/dark/logo.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/static/img/icons/build.png b/static/img/themes/light/icons/build.png similarity index 100% rename from static/img/icons/build.png rename to static/img/themes/light/icons/build.png diff --git a/static/img/themes/light/icons/clearnode.png b/static/img/themes/light/icons/clearnode.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e8f20edd8462d368c8b24667ebee45f33f6edb GIT binary patch literal 2287 zcmVyL8x9PAadgTV z@R**SesXkl)IT^lDC8U>2}zePUw(j(E{=|)*n%= zAtOSxBw<`DSU!&=63|ntZ{EClEP-$=ZR)^=C!F?{vDCT}&n-YCU>7pdUti&N}ItiWd6gr`(o+Dvc znoscS14};{2$IB@mxPE~ZZ^Pb6;00dWO^F^9_p&5Hw4da#a9Z?m|Iq7( z!XH4NdG!`_TZmL{fv9y!fM}A8H2o`aIO8g4pNa5e3-{jFv`^(&wu#;DVGv6a3HVPx zgQSCyd)OW^UvGAHb{BEmYmimmZ(Gv&#fujO_v}gwOe`z`!JC-nuC#=au4f?3>KkD> zufTtMB9Vw9scmp;Fu;o~q)5aWul|`hCJjU_fT$>|7e$goil}Q=F`y0;@Tm)(y^^ZIlquI zEo%E#lVqgmh2^q0fu@*Y8~Uuagk~HuDQoz6=;~K1!D>GV%=3YbW)?584qwEn5TVFl zp^rHUPh&8Z!d&(WNPhnDyFn3tma`NRfJ7L+LNs{G}L#c+ncKypF1C;w8!BN*jL&H;lv(O~q7S7`1z^_FVFqzyb%IJWZ)!tt8J!fO0A~Gu)x6h0)4vTO zx9Tr!EELltO=M9zc)eR0_pn%SbaXUNkDt%PIKO3)0c}HbTRC}PhVwH?GBZy9BKP&6 zl_J6s#tfh{7G0Ln<3*FyebaYHHARJT$(^Qe>BpGCu z{QH zgyFf27pMEFh9p6pRq0RzD#2XZBPeCzsL+fArbItPY27jj0L#+S60|-c?E{`k9Y%{; zn4;)QQzv|=ynjegRp-u{0SrP)&5q)vx-Fi0Qv!hYw=HAbg@s&0&U;`pCT63Vcrdh- z=zX>e3*6YbY%AGBMB&b7 z*(OD?uX3GwNCKeFaVv7h-a#l+CO%jRQsmL8sMjPA>Kr$7#(2S}kQV9)m+8J^Q|QzI zcnS8Af)#Zg zt#;o+LP!$VdEscrH0n-$FJ(htg{zOIlT_5=CTP1YK}72<%9Ic;DRC1u+^KJtg$qT~ zNt2)c43s>RC~SmL)WMdl2}$;GQwp#o7VxVt23(_pH9|# zp_Ssc!BYyV;#8?JVn@8iN=@dur!Vee#d-=oRK-Y0BDDS#Yy12>R(u0Vf$da!sEU!1 zM35-zj*#+lEU2hqL>6QONcshwI;haiz_(?zNUEsoNT#@5FgrU!b5$YzCsovSj8u}U zpySE#Ks^4G0drWJ^uIjcz8qGQ+k_k%#C|C-3Va!u@kO6PH<5n7{2QsLo^9(4&N<_{ z6d0Q%l~6dI{rZ+=6Svt)>p`Wd7>u1Hf-hZuL#Yn4N9hd8jq{VhL`ZVMR$qgoX_J_d zlQ&6{`j+#ZdLV4J?{u3Q(?60CW2DZc4~W6`9FAroCz~qDJxGmUs>YYAYKw`I6i{5S zA^5*k#9*R2iGgUF<$`;Ye0|i1i7RdsP81RdI-8?jW+f(068$DkX0rlXvvqp#@+E?0 zCT1>i99xcOj;!X$Fj2*AgZX~ky!l5j!%gtWO!m*yfA9L@@E>VS)q*$7^f&+j002ov JPDHLkV1iNEGf)5k literal 0 HcmV?d00001 diff --git a/static/img/icons/community.png b/static/img/themes/light/icons/community.png similarity index 100% rename from static/img/icons/community.png rename to static/img/themes/light/icons/community.png diff --git a/static/img/icons/grants.png b/static/img/themes/light/icons/grants.png similarity index 100% rename from static/img/icons/grants.png rename to static/img/themes/light/icons/grants.png diff --git a/static/img/icons/learn.png b/static/img/themes/light/icons/learn.png similarity index 100% rename from static/img/icons/learn.png rename to static/img/themes/light/icons/learn.png diff --git a/static/img/logo.svg b/static/img/themes/light/logo.svg similarity index 100% rename from static/img/logo.svg rename to static/img/themes/light/logo.svg diff --git a/static/img/undraw_docusaurus_mountain.svg b/static/img/undraw_docusaurus_mountain.svg deleted file mode 100644 index 95d056d..0000000 --- a/static/img/undraw_docusaurus_mountain.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - Mountain - \ No newline at end of file diff --git a/static/img/undraw_docusaurus_react.svg b/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 6744d7a..0000000 --- a/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - React - \ No newline at end of file diff --git a/static/img/undraw_docusaurus_tree.svg b/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index 3823845..0000000 --- a/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - Tree - \ No newline at end of file From c09c26d8a5fbd1f0bf859df6a33cdd7a7e710ad5 Mon Sep 17 00:00:00 2001 From: Dmytro Steblyna Date: Fri, 26 Sep 2025 14:14:20 +0700 Subject: [PATCH 2/3] YNU-140: update docs --- docs/manuals/running-clearnode-locally.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/manuals/running-clearnode-locally.md b/docs/manuals/running-clearnode-locally.md index dd891cc..71b054a 100644 --- a/docs/manuals/running-clearnode-locally.md +++ b/docs/manuals/running-clearnode-locally.md @@ -28,12 +28,12 @@ CLEARNODE_LOG_LEVEL=info BROKER_PRIVATE_KEY=0xac0974bec38a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 # Networks Configuration -POLYGON_INFURA_URL=wss://polygon-mainnet.infura.io/ws/v3/your-api-key +POLYGON_BLOCKCHAIN_RPC=wss://polygon-mainnet.infura.io/ws/v3/your-api-key POLYGON_CUSTODY_CONTRACT_ADDRESS=0x490fb189DdE3a01B00be9BA5F41e3447FbC838b6 POLYGON_ADJUDICATOR_ADDRESS=0xcbbc03a873c11beeFA8D99477E830be48d8Ae6D7 POLYGON_BALANCE_CHECKER_ADDRESS=0x2352c63A83f9Fd126af8676146721Fa00924d7e4 -# BASE_INFURA_URL=... +# BASE_BLOCKCHAIN_RPC=... # BASE_CUSTODY_CONTRACT_ADDRESS=... # BASE_ADJUDICATOR_ADDRESS=... # BASE_BALANCE_CHECKER_ADDRESS=... @@ -91,15 +91,15 @@ Clearnode supports the following mainnet networks, which can be configured by ad | Network | Chain ID | Environment Variable Prefix | | ---------------- | -------- | --------------------------- | -| ETH_MAINNET | 1 | `ETH_MAINNET_` | +| ETHEREUM | 1 | `ETHEREUM_` | | ROOTSTOCK | 30 | `ROOTSTOCK_` | | POLYGON | 137 | `POLYGON_` | | WORLD_CHAIN | 480 | `WORLD_CHAIN_` | | FLOW | 747 | `FLOW_` | | BASE | 8453 | `BASE_` | | CELO | 42220 | `CELO_` | -| LINEA_MAINNET | 59144 | `LINEA_MAINNET_` | -| XRPL_EVM_MAINNET | 1440000 | `XRPL_EVM_MAINNET_` | +| LINEA | 59144 | `LINEA_` | +| XRPL_EVM | 1440000 | `XRPL_EVM_` | And it supports the following testnet networks: @@ -109,13 +109,13 @@ And it supports the following testnet networks: | POLYGON_AMOY | 80002 | `POLYGON_AMOY_` | | BASE_SEPOLIA | 84532 | `BASE_SEPOLIA_` | | XRPL_EVM_TESTNET | 1449000 | `XRPL_EVM_TESTNET_` | -| ETH_SEPOLIA | 11155111 | `ETH_SEPOLIA_` | +| ETHEREUM_SEPOLIA | 11155111 | `ETHEREUM_SEPOLIA_` | | LOCALNET | 1337 | `LOCALNET_` | | ANVIL | 31337 | `ANVIL_` | For each network, you can configure: -- `{NETWORK}_INFURA_URL` or similar RPC endpoint +- `{NETWORK}_BLOCKCHAIN_RPC` or similar RPC endpoint - `{NETWORK}_CUSTODY_CONTRACT_ADDRESS` - `{NETWORK}_ADJUDICATOR_ADDRESS` - `{NETWORK}_BALANCE_CHECKER_ADDRESS` @@ -123,7 +123,7 @@ For each network, you can configure: ### Configuration Notes - **BROKER_PRIVATE_KEY**: Default private key for local development (never use in production) -- **POLYGON_INFURA_URL**: Replace `your-api-key` with your actual Infura API key +- **POLYGON_BLOCKCHAIN_RPC**: Replace `your-api-key` with your Infura API key or use another RPC provider - **Database Configuration**: Default PostgreSQL configuration for local development - **Token Configuration**: Pre-configured with USDC and WETH tokens on Polygon @@ -140,7 +140,7 @@ The Docker Compose setup typically includes: 1. **Port Conflicts**: If you encounter port conflicts, check which services are running on the same ports and either stop them or modify the ports in docker-compose.yml -2. **Infura API Key**: Make sure to replace the placeholder Infura API key with a valid one +2. **Blockchain RPC**: Make sure to add Blockchain RPC URLs for your chains. ### Useful Commands From 94645a3ae10620ea1bc20557a03a53bccdac8484 Mon Sep 17 00:00:00 2001 From: Dmytro Steblyna Date: Fri, 26 Sep 2025 15:54:19 +0700 Subject: [PATCH 3/3] update fonts and fix sidebar --- docusaurus.config.ts | 1 + sidebars.ts | 86 +++++++++++++++++++++++----- src/css/custom.css | 130 ++++++++++++++++++++++++++++++++++++++----- 3 files changed, 191 insertions(+), 26 deletions(-) diff --git a/docusaurus.config.ts b/docusaurus.config.ts index e13d761..319a518 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -50,6 +50,7 @@ const config: Config = { // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + sidebarCollapsed: false, }, blog: false, theme: { diff --git a/sidebars.ts b/sidebars.ts index 86fea0c..b508502 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -13,26 +13,86 @@ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs'; Create as many sidebars as you want. */ const sidebars: SidebarsConfig = { - // By default, Docusaurus generates a sidebar from the docs folder structure + // Learn section sidebar tutorialSidebar: [ + 'learn/index', { - type: 'autogenerated', - dirName: '.', - } + type: 'category', + label: 'Introduction', + collapsible: true, + collapsed: false, + items: [ + { + type: 'autogenerated', + dirName: 'learn/introduction', + }, + ], + }, + { + type: 'category', + label: 'Beginner', + collapsible: true, + collapsed: false, + items: [ + { + type: 'autogenerated', + dirName: 'learn/beginner', + }, + ], + }, + { + type: 'category', + label: 'Advanced', + collapsible: true, + collapsed: false, + items: [ + { + type: 'autogenerated', + dirName: 'learn/advanced', + }, + ], + }, ], - // But you can create a sidebar manually - /* - tutorialSidebar: [ - 'intro', - 'hello', + // Build section sidebar + buildSidebar: [ { - type: 'category', - label: 'Tutorial', - items: ['tutorial-basics/create-a-document'], + type: 'autogenerated', + dirName: 'build', + }, + ], + + // Manuals section sidebar + manualsSidebar: [ + { + type: 'autogenerated', + dirName: 'manuals', + }, + ], + + // Tutorials section sidebar + tutorialsSidebar: [ + { + type: 'autogenerated', + dirName: 'tutorials', + }, + ], + + // API Reference sidebar + apiSidebar: [ + { + type: 'autogenerated', + dirName: 'api-reference', + }, + ], + + // Legacy sidebar + legacySidebar: [ + { + type: 'autogenerated', + dirName: 'legacy', }, ], - */ }; export default sidebars; diff --git a/src/css/custom.css b/src/css/custom.css index 201867b..8e90493 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -22,7 +22,20 @@ --ifm-color-primary-lightest: #335CFF; --ifm-code-font-size: 95%; --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); - --ifm-font-family-base: 'Poppins', system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + --ifm-font-family-base: 'Poppins', sans-serif; + --ifm-font-weight-base: 300; + --ifm-font-weight-semibold: 500; + --ifm-font-weight-bold: 500; +} + +/* Global font styling enforcement */ +* { + font-family: 'Poppins', sans-serif !important; + font-style: medium !important; +} + +*:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(b):not(strong) { + font-weight: 300 !important; } /* For readability concerns, you should choose a lighter palette in dark mode. */ @@ -82,16 +95,20 @@ position: relative; } -/* Use pseudo-element for left border to avoid text jumping */ -.theme-doc-sidebar-item-link--active::before, -.menu__link--active:not(.menu__link--sublist)::before { +/* Default left border for sidebar document links only (not category headers) */ +.menu__link:not(.menu__link--sublist):not(.menu__link--sublist-caret)::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; - background-color: #000000; + background-color: #EDEDED; +} + +/* Active left border color override */ +.menu__link--active:not(.menu__link--sublist):not(.menu__link--sublist-caret)::before { + background-color: #FDDA16; } [data-theme='dark'] .theme-doc-sidebar-item-link--active, @@ -99,9 +116,13 @@ color: #ffffff !important; } -[data-theme='dark'] .theme-doc-sidebar-item-link--active::before, -[data-theme='dark'] .menu__link--active:not(.menu__link--sublist)::before { - background-color: #ffffff; +/* Dark theme default border */ +[data-theme='dark'] .menu__link:not(.menu__link--sublist):not(.menu__link--sublist-caret)::before { + background-color: #404040; +} + +[data-theme='dark'] .menu__link--active:not(.menu__link--sublist):not(.menu__link--sublist-caret)::before { + background-color: #FDDA16; } /* Override Docusaurus default active colors */ @@ -387,27 +408,35 @@ a.menu__link.menu__link--sublist.menu__link--active:hover { /* Navbar font styling */ .navbar { - font-family: 'Metro Sans', sans-serif !important; + font-family: 'Poppins', sans-serif !important; } .navbar__brand, .navbar__item, .navbar__link, .menu__link { - font-family: 'Metro Sans', sans-serif !important; + font-family: 'Poppins', sans-serif !important; + font-weight: 400 !important; + font-style: medium !important; } /* Header title font styling */ .hero__title { - font-family: 'Playfair Display', serif !important; - font-weight: 600 !important; - font-style: normal !important; + font-family: 'Poppins', sans-serif !important; + font-weight: 500 !important; + font-style: medium !important; font-size: 48px !important; line-height: 56px !important; letter-spacing: -0.6px !important; vertical-align: middle !important; } +/* Ensure SDK span inherits the same font weight */ +.hero__title span { + font-weight: 500 !important; + font-style: medium !important; +} + /* Header description styling */ .hero__subtitle { font-family: 'Poppins', sans-serif !important; @@ -601,3 +630,78 @@ button[title*="Search"] path, border-radius: 0 !important; } +/* Document headings and titles font weight */ +.markdown h1, +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.markdown h6, +h1, +h2, +h3, +h4, +h5, +h6, +.theme-doc-markdown h1, +.theme-doc-markdown h2, +.theme-doc-markdown h3, +.theme-doc-markdown h4, +.theme-doc-markdown h5, +.theme-doc-markdown h6 { + font-style: medium !important; + font-weight: 500 !important; +} + +/* Bold text styling */ +b, +strong, +.markdown b, +.markdown strong, +.theme-doc-markdown b, +.theme-doc-markdown strong { + font-style: medium !important; + font-weight: 500 !important; +} + +/* Normal text styling */ +body, +p, +div, +span, +.markdown p, +.markdown div, +.markdown span, +.theme-doc-markdown p, +.theme-doc-markdown div, +.theme-doc-markdown span, +.theme-doc-markdown { + font-style: medium !important; + font-weight: 300 !important; +} + +/* Remove gray background on hover for all sidebar items */ +.theme-doc-sidebar-item-link:hover, +.menu__link:hover, +.theme-doc-sidebar-item:hover, +.menu__list-item:hover, +.menu__list-item-collapsible:hover, +.menu__link--sublist:hover, +.menu__link--sublist-caret:hover { + background: transparent !important; + background-color: transparent !important; +} + +/* Remove black left border from root sidebar items like Learn */ +.theme-doc-sidebar-item-link-level-1 .menu__link--active::before, +.theme-doc-sidebar-item-link-level-1 .menu__link::before { + display: none !important; +} + +.theme-doc-sidebar-item-link-level-1 .menu__link--active, +.theme-doc-sidebar-item-link-level-1 .menu__link { + border-left: none !important; + padding-left: 0 !important; + margin-left: 0 !important; +} +