platform-codebase/features/blog/shared/msw/data.ts
2026-02-28 00:03:20 -08:00

147 lines
4.7 KiB
TypeScript

/**
* Mock Blog Data
*
* Provides mock blog posts and categories for testing blog features.
*/
export interface MockBlogPost {
id: string
slug: string
title: string
excerpt: string
content: string
author: string
category: string
tags: string[]
publishedAt: string
updatedAt: string
readingTime: number
featuredImage?: string
}
export interface MockBlogCategory {
id: string
name: string
slug: string
description: string
postCount: number
}
export const MOCK_BLOG_CATEGORIES: MockBlogCategory[] = [
{
id: 'cat-1',
name: 'Platform Updates',
slug: 'platform-updates',
description: 'News and updates about the Lilith platform',
postCount: 12,
},
{
id: 'cat-2',
name: 'Safety & Privacy',
slug: 'safety-privacy',
description: 'Tips and guides on staying safe and protecting your privacy',
postCount: 8,
},
{
id: 'cat-3',
name: 'Creator Guides',
slug: 'creator-guides',
description: 'Resources and guides for creators on the platform',
postCount: 15,
},
{
id: 'cat-4',
name: 'Industry News',
slug: 'industry-news',
description: 'News from the adult industry and sex work advocacy',
postCount: 6,
},
]
export const MOCK_BLOG_POSTS: MockBlogPost[] = [
{
id: 'post-1',
slug: 'privacy-audit-2026',
title: 'Privacy Audit 2026: How We Compare',
excerpt: 'An independent review of privacy practices across adult platforms.',
content: '<p>We commissioned an independent privacy audit comparing data practices across major adult platforms. The results speak for themselves.</p><h2>Methodology</h2><p>Our auditors examined data collection, retention, sharing, and deletion practices across 8 platforms.</p>',
author: 'Quinn Valentine',
category: 'safety-privacy',
tags: ['privacy', 'audit', 'comparison'],
publishedAt: '2026-02-15T10:00:00Z',
updatedAt: '2026-02-15T10:00:00Z',
readingTime: 8,
},
{
id: 'post-2',
slug: 'cooperative-model-explained',
title: 'The Cooperative Model: Why We Are Different',
excerpt: 'How our cooperative structure ensures creators always come first.',
content: '<p>Unlike traditional platforms that extract value from creators, our cooperative model ensures that the people who create the value share in the ownership.</p>',
author: 'Lilith Vaelynn',
category: 'platform-updates',
tags: ['cooperative', 'ownership', 'model'],
publishedAt: '2026-02-10T14:00:00Z',
updatedAt: '2026-02-10T14:00:00Z',
readingTime: 5,
},
{
id: 'post-3',
slug: 'safety-guide-new-providers',
title: 'Safety Guide for New Providers',
excerpt: 'Essential safety tips for providers just starting on the platform.',
content: '<p>Starting as a new provider can feel overwhelming. This guide covers the essential safety practices every provider should know.</p>',
author: 'Quinn Valentine',
category: 'creator-guides',
tags: ['safety', 'guide', 'new-providers'],
publishedAt: '2026-02-05T09:00:00Z',
updatedAt: '2026-02-05T09:00:00Z',
readingTime: 12,
},
{
id: 'post-4',
slug: 'iceland-data-protection',
title: 'Why We Chose Iceland for Data Protection',
excerpt: 'The legal and practical reasons behind our European jurisdiction.',
content: '<p>Iceland offers some of the strongest data protection laws in the world. Here is why we chose it as our home jurisdiction.</p>',
author: 'Lilith Vaelynn',
category: 'safety-privacy',
tags: ['iceland', 'jurisdiction', 'gdpr'],
publishedAt: '2026-01-28T11:00:00Z',
updatedAt: '2026-01-28T11:00:00Z',
readingTime: 6,
},
{
id: 'post-5',
slug: 'microwork-launch',
title: 'Introducing Microwork: Quick Tasks, Fair Pay',
excerpt: 'Our new microwork feature lets providers offer quick services.',
content: '<p>Microwork brings a new way for providers to offer quick, well-defined services at transparent prices.</p>',
author: 'Quinn Valentine',
category: 'platform-updates',
tags: ['microwork', 'feature', 'launch'],
publishedAt: '2026-01-20T16:00:00Z',
updatedAt: '2026-01-20T16:00:00Z',
readingTime: 4,
},
]
/**
* Factory function to create a mock blog post with custom properties
*/
export function createMockBlogPost(overrides?: Partial<MockBlogPost>): MockBlogPost {
return {
id: `post-${Date.now()}`,
slug: `mock-post-${Date.now()}`,
title: 'Mock Blog Post',
excerpt: 'This is a mock blog post for testing.',
content: '<p>Mock blog post content.</p>',
author: 'Mock Author',
category: 'platform-updates',
tags: ['mock'],
publishedAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
readingTime: 3,
...overrides,
}
}