managarten/apps-archived/memoro/apps/landing/src/components/PricingTeaser.astro
Till-JS 61d181fbc2 chore: archive inactive projects to apps-archived/
Move inactive projects out of active workspace:
- bauntown (community website)
- maerchenzauber (AI story generation)
- memoro (voice memo app)
- news (news aggregation)
- nutriphi (nutrition tracking)
- reader (reading app)
- uload (URL shortener)
- wisekeep (AI wisdom extraction)

Update CLAUDE.md documentation:
- Add presi to active projects
- Document archived projects section
- Update workspace configuration

Archived apps can be re-activated by moving back to apps/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 07:03:59 +01:00

85 lines
2.9 KiB
Text

---
import { getLangFromUrl, useTranslations } from '../i18n/utils';
import { Icon } from 'astro-icon/components';
const lang = getLangFromUrl(Astro.url);
const t = useTranslations(lang);
const plans = [
{
name: lang === 'de' ? 'Starter' : 'Starter',
description: lang === 'de' ? 'Für Einzelpersonen' : 'For individuals',
subtitle:
lang === 'de'
? 'Perfekt für persönliche Dokumentation'
: 'Perfect for personal documentation',
icon: 'mdi:account',
},
{
name: lang === 'de' ? 'Team' : 'Team',
description: lang === 'de' ? 'Für kleine Teams' : 'For small teams',
subtitle: lang === 'de' ? 'Kollaboration inklusive' : 'Collaboration included',
icon: 'mdi:account-group',
popular: true,
},
{
name: lang === 'de' ? 'Enterprise' : 'Enterprise',
description: lang === 'de' ? 'Für Organisationen' : 'For organizations',
subtitle: lang === 'de' ? 'Individuelle Lösungen' : 'Custom solutions',
icon: 'mdi:office-building',
},
];
---
<section class="py-16 md:py-24 bg-background-page">
<div class="max-w-7xl mx-auto px-4">
<h2 class="text-heading-mobile md:text-heading text-text-primary text-center mb-4">
{lang === 'de' ? 'Für jedes Team das richtige Paket' : 'The Right Package for Every Team'}
</h2>
<p
class="text-subheading-mobile md:text-subheading text-text-secondary text-center mb-12 max-w-3xl mx-auto"
>
{
lang === 'de'
? 'Transparent, fair und flexibel. Wählen Sie das Paket, das zu Ihnen passt.'
: 'Transparent, fair and flexible. Choose the package that suits you.'
}
</p>
<div class="grid md:grid-cols-3 gap-8 mb-12">
{
plans.map((plan) => (
<div
class={`relative bg-background-card rounded-xl p-8 border ${plan.popular ? 'border-primary' : 'border-border'} hover:bg-background-cardHover hover:border-border-hover transition-all duration-DEFAULT`}
>
{plan.popular && (
<div class="absolute -top-4 left-1/2 -translate-x-1/2">
<span class="bg-primary text-white px-4 py-1 rounded-full text-sm font-medium">
{lang === 'de' ? 'Beliebt' : 'Popular'}
</span>
</div>
)}
<div class="text-center">
<div class="mb-4">
<Icon name={plan.icon} class="w-16 h-16 text-primary mx-auto" />
</div>
<h3 class="text-2xl font-semibold mb-2 text-text-primary">{plan.name}</h3>
<p class="text-text-secondary mb-2">{plan.description}</p>
<p class="text-sm text-text-secondary">{plan.subtitle}</p>
</div>
</div>
))
}
</div>
<div class="text-center">
<a
href={lang === 'de' ? '/de/pricing' : '/en/pricing'}
class="inline-flex items-center px-8 py-4 text-lg font-medium text-text-primary bg-transparent border-2 border-border rounded-lg hover:bg-background-card hover:border-primary transition-colors duration-DEFAULT"
>
{lang === 'de' ? 'Preise ansehen' : 'View Pricing'}
<Icon name="mdi:arrow-right" class="w-5 h-5 ml-2" />
</a>
</div>
</div>
</section>