Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion blog/2024-12-09-why-push-chain/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: 'Why Push Chain is the Missing Layer in Web3'
authors: [harsh]
image: './cover-image.webp'
description: 'How a shared-state L1 can heal web3’s fragmentation and unleash web3’s true potential.'
text: 'Web3 is broken. Users juggle 30+ chains, developers rebuild apps for each ecosystem, and fragmentation kills adoption. Learn why Push Chain's shared-state architecture is the missing piece to finally unify blockchain.'
text: "Web3 is broken. Users juggle 30+ chains, developers rebuild apps for each ecosystem, and fragmentation kills adoption. Learn why Push Chain's shared-state architecture is the missing piece to finally unify blockchain."
tags: [Product, Key Features, Thought Leadership]
twitterId: '1869392237379092482'
---
Expand Down
4 changes: 0 additions & 4 deletions src/components/Blog/BlogTags.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,6 @@ const TagsTitle = styled(Span)`
line-height: 110%;
letter-spacing: -1.2px;
display: ${(props) => (props.$scrollingTheme ? 'none' : 'block')};

@media ${device.desktop} {
display: block;
}
`;

const TagsList = styled.div`
Expand Down
124 changes: 124 additions & 0 deletions src/theme/Navbar/MobileSidebar/DocsMobileSidebarContent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
import { useNavbarMobileSidebar } from '@docusaurus/theme-common/internal';
import { HeaderList } from '@site/src/config/HeaderList';
import { useSiteBaseUrl } from '@site/src/hooks/useSiteBaseUrl';
import React from 'react';
import { useTranslation } from 'react-i18next';
import { useHistory } from 'react-router-dom';
import styled from 'styled-components';

export default function DocsMobileSidebarContent() {
const history = useHistory();
const baseURL = useSiteBaseUrl() || '';
const mobileSidebar = useNavbarMobileSidebar();
const { t } = useTranslation();

const handleNavigation = (path) => {
mobileSidebar.toggle();
if (path.startsWith('http')) {
window.open(path, '_blank');
} else {
history.push(baseURL + path);
}
};

return (
<MobileMenuContainer>
<MenuItem onClick={() => handleNavigation('/')}>Homepage</MenuItem>

<MenuItem onClick={() => handleNavigation('/docs/chain')}>
What is Push Chain
</MenuItem>

<MenuItem onClick={() => handleNavigation('/docs/chain/build')}>
Let's Build
</MenuItem>

<MenuItem onClick={() => handleNavigation('/docs/chain/ui-kit')}>
UI Kit
</MenuItem>

<ExploreSection>
<ExploreHeader>Explore</ExploreHeader>

<SubMenuContainer>
{HeaderList.explore.map((item, index) => (
<SubMenuItem
key={index}
onClick={() => handleNavigation(item.href)}
>
{t(item.text)}
</SubMenuItem>
))}
</SubMenuContainer>
</ExploreSection>

<MenuDivider />

<MenuItem
onClick={() => handleNavigation('https://discord.com/invite/pushchain')}
>
Ask in Discord
</MenuItem>

<MenuItem onClick={() => handleNavigation('https://portal.push.org/')}>
Push Portal
</MenuItem>
</MobileMenuContainer>
);
}

const MobileMenuContainer = styled.div`
display: flex;
flex-direction: column;
`;

const MenuItem = styled.div`
padding: 12px 12px;
font-size: 1rem;
font-weight: 400;
color: var(--ifm-color-primary-text);
cursor: pointer;
transition: background-color 0.2s;

&:hover {
background-color: var(--ifm-navbar-dropdown-hover);
}
`;

const ExploreSection = styled.div`
display: flex;
flex-direction: column;
`;

const ExploreHeader = styled.div`
padding: 12px 12px;
font-size: 1rem;
font-weight: 400;
color: var(--ifm-color-primary-text);
`;

const SubMenuContainer = styled.div`
display: flex;
flex-direction: column;
margin-left: 24px;
border-left: 2px solid var(--ifm-color-pink-200);
`;

const SubMenuItem = styled.div`
padding: 12px 12px;
font-size: 0.95rem;
font-weight: 400;
color: var(--ifm-color-primary-text);
cursor: pointer;
transition: background-color 0.2s;

&:hover {
background-color: var(--ifm-navbar-dropdown-hover);
color: var(--ifm-color-pink-200);
}
`;

const MenuDivider = styled.div`
height: 1px;
margin: 8px 24px;
`;
8 changes: 6 additions & 2 deletions src/theme/Navbar/MobileSidebar/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,24 @@ import NavbarMobileSidebarPrimaryMenu from '@theme/Navbar/MobileSidebar/PrimaryM
import NavbarMobileSidebarSecondaryMenu from '@theme/Navbar/MobileSidebar/SecondaryMenu';
import React from 'react';
import BlogMobileSidebarContent from './BlogMobileSidebarContent';
import DocsMobileSidebarContent from './DocsMobileSidebarContent';
import './styles.module.css';

export default function NavbarMobileSidebar() {
const location = useLocation();
const pathname = location?.pathname;
const baseURL = useSiteBaseUrl() || '';

const isBlogPage = !pathname?.startsWith(baseURL + '/docs');
const isDocsPage = pathname?.startsWith(baseURL + '/docs');
const isBlogPage = pathname?.startsWith(baseURL + '/blog');

return (
<NavbarMobileSidebarLayout
header={<NavbarMobileSidebarHeader />}
primaryMenu={
isBlogPage ? (
isDocsPage ? (
<DocsMobileSidebarContent />
) : isBlogPage ? (
<BlogMobileSidebarContent />
) : (
<NavbarMobileSidebarPrimaryMenu />
Expand Down
4 changes: 2 additions & 2 deletions static/content/blogtags.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"link": "/blog/tags/featured/",
"priority": 0,
"category": "Featured",
"count": 5
"count": 4
},
{
"name": "Product",
Expand Down Expand Up @@ -85,7 +85,7 @@
"link": "/blog/tags/deep-dives/",
"priority": 10,
"category": "Deep Dives",
"count": 7
"count": 6
},
{
"name": "Push 101",
Expand Down
19 changes: 0 additions & 19 deletions static/content/featuredblogs.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,6 @@
],
"showcase": true
},
{
"title": "How Universal Fee Abstraction Works",
"link": "/blog/how-universal-abstraction-works/",
"slug": "how-universal-abstraction-works",
"pubDate": "Thu, 05 Feb 2026 00:00:00 GMT",
"description": "Click 'Stake 500 USDC' and it just works. No gas token hunting, no chain switching, no wallet juggling. Learn how Universal Fee Abstraction delivers the seamless UX users actually expect.",
"readingTime": 1,
"imageUrl": "/assets/blog/featured/blog--how-universal-abstraction-works--cover-image.webp",
"tags": [
"Featured",
"Product",
"Key Features",
"Deep Dives"
],
"authors": [
"push"
],
"showcase": false
},
{
"title": "How Universal Transaction Works",
"link": "/blog/how-universal-transaction-works/",
Expand Down
Loading
Loading