From 6c3055727842b670802617f98b10ce0c15246d86 Mon Sep 17 00:00:00 2001 From: Maharshi Mishra Date: Fri, 13 Feb 2026 14:55:39 +0530 Subject: [PATCH 1/2] fix: replace broken favicon placeholder with real Yellow Network icon The favicon.ico was an SVG placeholder masquerading as an .ico file, causing browsers to reject it. This resulted in a broken/missing favicon, especially noticeable when navigating directly to anchor URLs. Replaced with the actual Yellow Network favicon from yellow.org (128x128 PNG). --- static/img/favicon.ico | Bin 210 -> 2756 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/static/img/favicon.ico b/static/img/favicon.ico index eb0ef9a659ba3fe31b6895a34621a85c8c46b379..9fd76801297ff39aab53ec65720dd5cea988596d 100644 GIT binary patch literal 2756 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 Cia(qH From 67c288b5d6f6bddb1ae17291932e2906af068059 Mon Sep 17 00:00:00 2001 From: Maharshi Mishra Date: Fri, 13 Feb 2026 15:02:30 +0530 Subject: [PATCH 2/2] fix: update edit link to point to layer-3/docs and rename to 'Suggest a fix' - Changed editUrl from the default Docusaurus template repo to https://github.com/layer-3/docs/tree/master/ - Renamed 'Edit this page' label to 'Suggest a fix' via i18n/en/code.json - Added i18n translation files generated by write-translations --- docusaurus.config.ts | 4 +- i18n/en/code.json | 329 ++++++++++++++++++ .../current.json | 34 ++ i18n/en/docusaurus-theme-classic/footer.json | 54 +++ 4 files changed, 418 insertions(+), 3 deletions(-) create mode 100644 i18n/en/code.json create mode 100644 i18n/en/docusaurus-plugin-content-docs/current.json create mode 100644 i18n/en/docusaurus-theme-classic/footer.json diff --git a/docusaurus.config.ts b/docusaurus.config.ts index cb4aad0..4c029e4 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -61,10 +61,8 @@ const config: Config = { docs: { sidebarPath: './sidebars.ts', routeBasePath: '/docs', - // Please change this to your repo. - // Remove this to remove the "edit this page" links. editUrl: - 'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/', + 'https://github.com/layer-3/docs/tree/master/', sidebarCollapsed: false, sidebarCollapsible: false, breadcrumbs: true, diff --git a/i18n/en/code.json b/i18n/en/code.json new file mode 100644 index 0000000..4b28450 --- /dev/null +++ b/i18n/en/code.json @@ -0,0 +1,329 @@ +{ + "theme.docs.sidebar.closeSidebarButtonAriaLabel": { + "message": "Close navigation bar", + "description": "The ARIA label for close button of mobile sidebar" + }, + "theme.ErrorPageContent.title": { + "message": "This page crashed.", + "description": "The title of the fallback page when the page crashed" + }, + "theme.BackToTopButton.buttonAriaLabel": { + "message": "Scroll back to top", + "description": "The ARIA label for the back to top button" + }, + "theme.blog.paginator.navAriaLabel": { + "message": "Blog list page navigation", + "description": "The ARIA label for the blog pagination" + }, + "theme.blog.paginator.newerEntries": { + "message": "Newer entries", + "description": "The label used to navigate to the newer blog posts page (previous page)" + }, + "theme.blog.paginator.olderEntries": { + "message": "Older entries", + "description": "The label used to navigate to the older blog posts page (next page)" + }, + "theme.blog.archive.title": { + "message": "Archive", + "description": "The page & hero title of the blog archive page" + }, + "theme.blog.archive.description": { + "message": "Archive", + "description": "The page & hero description of the blog archive page" + }, + "theme.blog.post.paginator.navAriaLabel": { + "message": "Blog post page navigation", + "description": "The ARIA label for the blog posts pagination" + }, + "theme.blog.post.paginator.newerPost": { + "message": "Newer post", + "description": "The blog post button label to navigate to the newer/previous post" + }, + "theme.blog.post.paginator.olderPost": { + "message": "Older post", + "description": "The blog post button label to navigate to the older/next post" + }, + "theme.tags.tagsPageLink": { + "message": "View all tags", + "description": "The label of the link targeting the tag list page" + }, + "theme.colorToggle.ariaLabel.mode.system": { + "message": "system mode", + "description": "The name for the system color mode" + }, + "theme.colorToggle.ariaLabel.mode.light": { + "message": "light mode", + "description": "The name for the light color mode" + }, + "theme.colorToggle.ariaLabel.mode.dark": { + "message": "dark mode", + "description": "The name for the dark color mode" + }, + "theme.colorToggle.ariaLabel": { + "message": "Switch between dark and light mode (currently {mode})", + "description": "The ARIA label for the color mode toggle" + }, + "theme.docs.breadcrumbs.navAriaLabel": { + "message": "Breadcrumbs", + "description": "The ARIA label for the breadcrumbs" + }, + "theme.docs.DocCard.categoryDescription.plurals": { + "message": "1 item|{count} items", + "description": "The default description for a category card in the generated index about how many items this category includes" + }, + "theme.docs.paginator.navAriaLabel": { + "message": "Docs pages", + "description": "The ARIA label for the docs pagination" + }, + "theme.docs.paginator.previous": { + "message": "Previous", + "description": "The label used to navigate to the previous doc" + }, + "theme.docs.paginator.next": { + "message": "Next", + "description": "The label used to navigate to the next doc" + }, + "theme.docs.tagDocListPageTitle.nDocsTagged": { + "message": "One doc tagged|{count} docs tagged", + "description": "Pluralized label for \"{count} docs tagged\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.docs.tagDocListPageTitle": { + "message": "{nDocsTagged} with \"{tagName}\"", + "description": "The title of the page for a docs tag" + }, + "theme.docs.versionBadge.label": { + "message": "Version: {versionLabel}" + }, + "theme.docs.versions.unreleasedVersionLabel": { + "message": "This is unreleased documentation for {siteTitle} {versionLabel} version.", + "description": "The label used to tell the user that he's browsing an unreleased doc version" + }, + "theme.docs.versions.unmaintainedVersionLabel": { + "message": "This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.", + "description": "The label used to tell the user that he's browsing an unmaintained doc version" + }, + "theme.docs.versions.latestVersionSuggestionLabel": { + "message": "For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).", + "description": "The label used to tell the user to check the latest version" + }, + "theme.docs.versions.latestVersionLinkLabel": { + "message": "latest version", + "description": "The label used for the latest version suggestion link label" + }, + "theme.common.editThisPage": { + "message": "Suggest a fix", + "description": "The link label to edit the current page" + }, + "theme.common.headingLinkTitle": { + "message": "Direct link to {heading}", + "description": "Title for link to heading" + }, + "theme.lastUpdated.atDate": { + "message": " on {date}", + "description": "The words used to describe on which date a page has been last updated" + }, + "theme.lastUpdated.byUser": { + "message": " by {user}", + "description": "The words used to describe by who the page has been last updated" + }, + "theme.lastUpdated.lastUpdatedAtBy": { + "message": "Last updated{atDate}{byUser}", + "description": "The sentence used to display when a page has been last updated, and by who" + }, + "theme.NotFound.title": { + "message": "Page Not Found", + "description": "The title of the 404 page" + }, + "theme.navbar.mobileVersionsDropdown.label": { + "message": "Versions", + "description": "The label for the navbar versions dropdown on mobile view" + }, + "theme.tags.tagsListLabel": { + "message": "Tags:", + "description": "The label alongside a tag list" + }, + "theme.AnnouncementBar.closeButtonAriaLabel": { + "message": "Close", + "description": "The ARIA label for close button of announcement bar" + }, + "theme.admonition.caution": { + "message": "caution", + "description": "The default label used for the Caution admonition (:::caution)" + }, + "theme.admonition.danger": { + "message": "danger", + "description": "The default label used for the Danger admonition (:::danger)" + }, + "theme.admonition.info": { + "message": "info", + "description": "The default label used for the Info admonition (:::info)" + }, + "theme.admonition.note": { + "message": "note", + "description": "The default label used for the Note admonition (:::note)" + }, + "theme.admonition.tip": { + "message": "tip", + "description": "The default label used for the Tip admonition (:::tip)" + }, + "theme.admonition.warning": { + "message": "warning", + "description": "The default label used for the Warning admonition (:::warning)" + }, + "theme.blog.sidebar.navAriaLabel": { + "message": "Blog recent posts navigation", + "description": "The ARIA label for recent posts in the blog sidebar" + }, + "theme.DocSidebarItem.expandCategoryAriaLabel": { + "message": "Expand sidebar category '{label}'", + "description": "The ARIA label to expand the sidebar category" + }, + "theme.DocSidebarItem.collapseCategoryAriaLabel": { + "message": "Collapse sidebar category '{label}'", + "description": "The ARIA label to collapse the sidebar category" + }, + "theme.IconExternalLink.ariaLabel": { + "message": "(opens in new tab)", + "description": "The ARIA label for the external link icon" + }, + "theme.NavBar.navAriaLabel": { + "message": "Main", + "description": "The ARIA label for the main navigation" + }, + "theme.NotFound.p1": { + "message": "We could not find what you were looking for.", + "description": "The first paragraph of the 404 page" + }, + "theme.NotFound.p2": { + "message": "Please contact the owner of the site that linked you to the original URL and let them know their link is broken.", + "description": "The 2nd paragraph of the 404 page" + }, + "theme.navbar.mobileLanguageDropdown.label": { + "message": "Languages", + "description": "The label for the mobile language switcher dropdown" + }, + "theme.blog.post.readingTime.plurals": { + "message": "One min read|{readingTime} min read", + "description": "Pluralized label for \"{readingTime} min read\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.TOCCollapsible.toggleButtonLabel": { + "message": "On this page", + "description": "The label used by the button on the collapsible TOC component" + }, + "theme.CodeBlock.copy": { + "message": "Copy", + "description": "The copy button label on code blocks" + }, + "theme.CodeBlock.copied": { + "message": "Copied", + "description": "The copied button label on code blocks" + }, + "theme.CodeBlock.copyButtonAriaLabel": { + "message": "Copy code to clipboard", + "description": "The ARIA label for copy code blocks button" + }, + "theme.blog.post.readMore": { + "message": "Read more", + "description": "The label used in blog post item excerpts to link to full blog posts" + }, + "theme.blog.post.readMoreLabel": { + "message": "Read more about {title}", + "description": "The ARIA label for the link to full blog posts from excerpts" + }, + "theme.CodeBlock.wordWrapToggle": { + "message": "Toggle word wrap", + "description": "The title attribute for toggle word wrapping button of code block lines" + }, + "theme.docs.breadcrumbs.home": { + "message": "Home page", + "description": "The ARIA label for the home page in the breadcrumbs" + }, + "theme.docs.sidebar.collapseButtonTitle": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.collapseButtonAriaLabel": { + "message": "Collapse sidebar", + "description": "The title attribute for collapse button of doc sidebar" + }, + "theme.docs.sidebar.navAriaLabel": { + "message": "Docs sidebar", + "description": "The ARIA label for the sidebar navigation" + }, + "theme.navbar.mobileDropdown.collapseButton.expandAriaLabel": { + "message": "Expand the dropdown", + "description": "The ARIA label of the button to expand the mobile dropdown navbar item" + }, + "theme.navbar.mobileDropdown.collapseButton.collapseAriaLabel": { + "message": "Collapse the dropdown", + "description": "The ARIA label of the button to collapse the mobile dropdown navbar item" + }, + "theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel": { + "message": "← Back to main menu", + "description": "The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)" + }, + "theme.docs.sidebar.expandButtonTitle": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.expandButtonAriaLabel": { + "message": "Expand sidebar", + "description": "The ARIA label and title attribute for expand button of doc sidebar" + }, + "theme.docs.sidebar.toggleSidebarButtonAriaLabel": { + "message": "Toggle navigation bar", + "description": "The ARIA label for hamburger menu button of mobile navigation" + }, + "theme.blog.post.plurals": { + "message": "One post|{count} posts", + "description": "Pluralized label for \"{count} posts\". Use as much plural forms (separated by \"|\") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)" + }, + "theme.blog.tagTitle": { + "message": "{nPosts} tagged with \"{tagName}\"", + "description": "The title of the page for a blog tag" + }, + "theme.blog.author.pageTitle": { + "message": "{authorName} - {nPosts}", + "description": "The title of the page for a blog author" + }, + "theme.blog.authorsList.pageTitle": { + "message": "Authors", + "description": "The title of the authors page" + }, + "theme.blog.authorsList.viewAll": { + "message": "View all authors", + "description": "The label of the link targeting the blog authors page" + }, + "theme.blog.author.noPosts": { + "message": "This author has not written any posts yet.", + "description": "The text for authors with 0 blog post" + }, + "theme.contentVisibility.unlistedBanner.title": { + "message": "Unlisted page", + "description": "The unlisted content banner title" + }, + "theme.contentVisibility.unlistedBanner.message": { + "message": "This page is unlisted. Search engines will not index it, and only users having a direct link can access it.", + "description": "The unlisted content banner message" + }, + "theme.contentVisibility.draftBanner.title": { + "message": "Draft page", + "description": "The draft content banner title" + }, + "theme.contentVisibility.draftBanner.message": { + "message": "This page is a draft. It will only be visible in dev and be excluded from the production build.", + "description": "The draft content banner message" + }, + "theme.ErrorPageContent.tryAgain": { + "message": "Try again", + "description": "The label of the button to try again rendering when the React error boundary captures an error" + }, + "theme.common.skipToMainContent": { + "message": "Skip to main content", + "description": "The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation" + }, + "theme.tags.tagsPageTitle": { + "message": "Tags", + "description": "The title of the tag list page" + } +} \ No newline at end of file diff --git a/i18n/en/docusaurus-plugin-content-docs/current.json b/i18n/en/docusaurus-plugin-content-docs/current.json new file mode 100644 index 0000000..58c22ac --- /dev/null +++ b/i18n/en/docusaurus-plugin-content-docs/current.json @@ -0,0 +1,34 @@ +{ + "version.label": { + "message": "0.5.x", + "description": "The label for version current" + }, + "sidebar.learnSidebar.category.Introduction": { + "message": "Introduction", + "description": "The label for category 'Introduction' in sidebar 'learnSidebar'" + }, + "sidebar.learnSidebar.category.Getting Started": { + "message": "Getting Started", + "description": "The label for category 'Getting Started' in sidebar 'learnSidebar'" + }, + "sidebar.learnSidebar.category.Core Concepts": { + "message": "Core Concepts", + "description": "The label for category 'Core Concepts' in sidebar 'learnSidebar'" + }, + "sidebar.learnSidebar.category.Advanced": { + "message": "Advanced", + "description": "The label for category 'Advanced' in sidebar 'learnSidebar'" + }, + "sidebar.learnSidebar.doc.Learn": { + "message": "Learn", + "description": "The label for the doc item 'Learn' in sidebar 'learnSidebar', linking to the doc learn/index" + }, + "sidebar.protocolSidebar.category.On-Chain Protocol": { + "message": "On-Chain Protocol", + "description": "The label for category 'On-Chain Protocol' in sidebar 'protocolSidebar'" + }, + "sidebar.protocolSidebar.category.Off-Chain RPC Protocol": { + "message": "Off-Chain RPC Protocol", + "description": "The label for category 'Off-Chain RPC Protocol' in sidebar 'protocolSidebar'" + } +} diff --git a/i18n/en/docusaurus-theme-classic/footer.json b/i18n/en/docusaurus-theme-classic/footer.json new file mode 100644 index 0000000..a351286 --- /dev/null +++ b/i18n/en/docusaurus-theme-classic/footer.json @@ -0,0 +1,54 @@ +{ + "link.title. ": { + "message": " ", + "description": "The title of the footer links column with title= in the footer" + }, + "link.title.Docs": { + "message": "Docs", + "description": "The title of the footer links column with title=Docs in the footer" + }, + "link.title.Community": { + "message": "Community", + "description": "The title of the footer links column with title=Community in the footer" + }, + "link.title.Social": { + "message": "Social", + "description": "The title of the footer links column with title=Social in the footer" + }, + "link.item.label.Learn": { + "message": "Learn", + "description": "The label of footer link with label=Learn linking to /docs/learn" + }, + "link.item.label.Build": { + "message": "Build", + "description": "The label of footer link with label=Build linking to /docs/build/quick-start" + }, + "link.item.label.Manuals": { + "message": "Manuals", + "description": "The label of footer link with label=Manuals linking to /docs/manuals" + }, + "link.item.label.Guides": { + "message": "Guides", + "description": "The label of footer link with label=Guides linking to /docs/guides" + }, + "link.item.label.Whitepaper": { + "message": "Whitepaper", + "description": "The label of footer link with label=Whitepaper linking to /whitepaper" + }, + "link.item.label.Discord": { + "message": "Discord", + "description": "The label of footer link with label=Discord linking to https://discord.com/invite/yellownetwork" + }, + "link.item.label.GitHub": { + "message": "GitHub", + "description": "The label of footer link with label=GitHub linking to https://github.com/layer-3" + }, + "link.item.label.X": { + "message": "X", + "description": "The label of footer link with label=X linking to https://x.com/YellowCom_News" + }, + "copyright": { + "message": "Copyright © 2026 Layer3 Fintech Ltd.", + "description": "The footer copyright" + } +}