...
This commit is contained in:
parent
ccf8175ba5
commit
9d0ea42900
@ -9,6 +9,7 @@ description: "Unlike corporate AI that serves shareholders, Personal Agents work
|
||||
featured: false
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "ai-that-serves-you-the-personal-agent-revolution"
|
||||
---
|
||||
|
||||
Unlike corporate AI that serves shareholders, Personal Agents work exclusively for you. Learn how this changes everything about AI interaction.
|
||||
|
@ -9,6 +9,7 @@ description: "How HERO's zero-knowledge architecture enables trust without compr
|
||||
featured: false
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "building-trust-in-a-zero-knowledge-world"
|
||||
---
|
||||
|
||||
How HERO's zero-knowledge architecture enables trust without compromising privacy. A deep dive into the cryptographic foundations of digital sovereignty.
|
||||
|
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Dispute Resolution (AI & People)
|
||||
slug: dispute-resolution-ai-and-people
|
||||
description: Explore the innovative dispute resolution mechanisms available within a digital freezone, combining AI efficiency with human oversight.
|
||||
image: /src/assets/disputeresolution.jpg
|
||||
---
|
||||
|
@ -1,7 +1,8 @@
|
||||
---
|
||||
title: Keep Your Assets Safe Now and in Future
|
||||
slug: keep-your-assets-safe-now-and-in-future
|
||||
description: Discover how a digital freezone provides robust protection for your assets against current and future threats.
|
||||
image: /src/assets/theworld.jpg
|
||||
image: /src/assets/world.jpg
|
||||
---
|
||||
|
||||
In an era of increasing digital threats and economic uncertainties, securing your assets is more critical than ever. A digital freezone offers a fortified environment designed to protect your digital wealth, ensuring its safety both today and in the years to come.
|
||||
|
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Legal and Financial Sovereignty
|
||||
slug: legal-and-financial-sovereignty
|
||||
description: Understand how a digital freezone provides unparalleled legal and financial sovereignty for your operations.
|
||||
image: /src/assets/freezone.jpg
|
||||
---
|
||||
|
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Ultimate in Convenience and Features
|
||||
slug: ultimate-in-convenience-and-features
|
||||
description: Experience unparalleled convenience and a rich suite of features designed to make your business life fun again within a digital freezone.
|
||||
image: /src/assets/stresssfree.jpg
|
||||
---
|
||||
|
@ -9,6 +9,7 @@ description: "Tracing the journey from corporate-controlled identities to blockc
|
||||
featured: false
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "from-centralized-to-sovereign-the-evolution-of-digital-identity"
|
||||
---
|
||||
|
||||
Tracing the journey from corporate-controlled identities to blockchain-verified, user-owned digital personas. The future is sovereign.
|
||||
|
@ -8,6 +8,7 @@ image: "/src/assets/heart.jpg"
|
||||
featured: false
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "peer-to-peer-communication-cutting-out-the-middleman"
|
||||
---
|
||||
|
||||
How HERO enables direct communication between Personal Agents without corporate intermediaries. The future of private messaging is here.
|
||||
|
@ -8,6 +8,7 @@ image: "/src/assets/balls.jpg"
|
||||
featured: false
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "quantum-safe-storage-protecting-your-digital-legacy"
|
||||
---
|
||||
|
||||
As quantum computing threatens traditional encryption, HERO's quantum-safe storage ensures your data remains secure for generations.
|
||||
|
@ -9,6 +9,7 @@ description: "Why paying $20/month for digital freedom is the best investment yo
|
||||
featured: false
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "the-economics-of-digital-sovereignty"
|
||||
---
|
||||
|
||||
Why paying $20/month for digital freedom is the best investment you'll ever make. Breaking down the true cost of corporate data harvesting.
|
||||
|
@ -9,6 +9,7 @@ description: "In an era where tech giants control our digital lives, Personal Ag
|
||||
featured: true
|
||||
draft: false
|
||||
cat: "blog"
|
||||
slug: "the-future-of-digital-sovereignty-why-personal-agents-matter"
|
||||
---
|
||||
|
||||
In an era where tech giants control our digital lives, Personal Agents represent a fundamental shift toward individual sovereignty and privacy. Discover how HERO is leading this revolution.
|
||||
|
@ -10,9 +10,10 @@ import { Buffer } from 'buffer'; // Explicitly import Buffer
|
||||
|
||||
// Import images
|
||||
import blogBackground from '../assets/myhero.jpg';
|
||||
import defaultPostImage from '../assets/myhero.jpg'; // Using an existing image as a fallback
|
||||
|
||||
// Use Vite's import.meta.glob to import all markdown files
|
||||
const modules = import.meta.glob('../blogs/*.md', { as: 'raw', eager: true });
|
||||
const modules = import.meta.glob('../blogs/*.md', { query: '?raw', import: 'default', eager: true });
|
||||
|
||||
const Blog = () => {
|
||||
const [posts, setPosts] = useState([]);
|
||||
@ -35,8 +36,8 @@ const Blog = () => {
|
||||
loadedPosts.push({
|
||||
...frontmatter,
|
||||
slug,
|
||||
// Ensure image path is correct for Vite
|
||||
image: frontmatter.image ? new URL(frontmatter.image, import.meta.url).href : '/src/assets/default.jpg'
|
||||
// Ensure image path is correct for Vite, use defaultPostImage as fallback
|
||||
image: frontmatter.image ? new URL(frontmatter.image, import.meta.url).href : defaultPostImage
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -251,13 +252,12 @@ const Blog = () => {
|
||||
</div>
|
||||
|
||||
<div className="grid md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{blogPosts.map((post, index) => (
|
||||
<Link to={`/blog/${post.slug}`} className="block">
|
||||
{blogPosts.map((post) => (
|
||||
<Link to={`/blog/${post.slug}`} className="block" key={post.slug}>
|
||||
<motion.article
|
||||
key={index}
|
||||
initial={{ opacity: 0, y: 30 }}
|
||||
whileInView={{ opacity: 1, y: 0 }}
|
||||
transition={{ duration: 0.6, delay: index * 0.1 }}
|
||||
transition={{ duration: 0.6, delay: blogPosts.indexOf(post) * 0.1 }}
|
||||
viewport={{ once: true }}
|
||||
className="glass-effect rounded-xl overflow-hidden hover:border-purple-400/30 transition-all duration-300 hover-lift group"
|
||||
>
|
||||
@ -269,7 +269,6 @@ const Blog = () => {
|
||||
/>
|
||||
<div className="absolute inset-0"></div>
|
||||
</div>
|
||||
|
||||
<div className="p-6">
|
||||
<div className="flex flex-wrap gap-2 mb-3">
|
||||
{post.tags.slice(0, 2).map((tag) => (
|
||||
@ -366,3 +365,4 @@ const Blog = () => {
|
||||
|
||||
export default Blog;
|
||||
|
||||
|
||||
|
@ -16,32 +16,25 @@ const BlogPost = () => {
|
||||
useEffect(() => {
|
||||
const loadPost = async () => {
|
||||
try {
|
||||
const allModules = import.meta.glob('../blogs/*.md', { as: 'raw', eager: true });
|
||||
let foundContent = null;
|
||||
const allModules = import.meta.glob('../blogs/*.md', { query: '?raw', import: 'default', eager: true });
|
||||
let foundPost = null;
|
||||
|
||||
const possibleFileNames = [
|
||||
`capability_${slug}.md`,
|
||||
`component_${slug}.md`,
|
||||
`tech_${slug}.md`,
|
||||
`${slug}.md` // For general blog posts
|
||||
];
|
||||
for (const path in allModules) {
|
||||
const content = allModules[path];
|
||||
const { data: frontmatter, content: markdownContent } = matter(content);
|
||||
|
||||
// Generate slug from filename if not present in frontmatter
|
||||
const postSlug = frontmatter.slug || path.split('/').pop().replace('.md', '');
|
||||
|
||||
for (const fileName of possibleFileNames) {
|
||||
const filePath = `../blogs/${fileName}`;
|
||||
if (allModules[filePath]) {
|
||||
foundContent = allModules[filePath];
|
||||
// Check if the generated slug matches the URL slug
|
||||
if (postSlug === slug) {
|
||||
foundPost = { frontmatter, content: markdownContent };
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (foundContent) {
|
||||
const content = foundContent;
|
||||
const { data: frontmatter, content: markdownContent } = matter(content);
|
||||
|
||||
setPost({
|
||||
frontmatter,
|
||||
content: markdownContent
|
||||
});
|
||||
if (foundPost) {
|
||||
setPost(foundPost);
|
||||
} else {
|
||||
setError('Post not found');
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user