feat(landing): add Presi landing page and improve Zitare landing

- Create complete Presi landing page with Astro + Tailwind
- Orange theme (#f97316) matching Presi branding
- Use shared-landing-ui components (HeroSection, FeatureSection, FAQSection, CTASection)
- Add "How it works" section with 4-step guide
- Fix Zitare landing styling with proper Tailwind config
- Add CSS custom properties for consistent theming
- Add deploy:landing:presi script and update deploy:landing:all
- Add dev:presi:landing script

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Till-JS 2025-12-02 13:06:38 +01:00
parent 29aaaec4fa
commit 623b1a21b1
20 changed files with 1582 additions and 256 deletions

View file

@ -0,0 +1,8 @@
import { defineConfig } from 'astro/config';
import tailwind from '@astrojs/tailwind';
import sitemap from '@astrojs/sitemap';
export default defineConfig({
site: 'https://presi.manacore.app',
integrations: [tailwind(), sitemap()],
});

View file

@ -0,0 +1,26 @@
{
"name": "@presi/landing",
"version": "1.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
"build": "astro check && astro build",
"preview": "astro preview",
"astro": "astro",
"type-check": "astro check"
},
"dependencies": {
"@astrojs/check": "^0.9.0",
"@astrojs/sitemap": "^3.2.1",
"@manacore/shared-landing-ui": "workspace:*",
"astro": "^5.16.0",
"typescript": "^5.0.0"
},
"devDependencies": {
"@astrojs/tailwind": "^6.0.0",
"@tailwindcss/typography": "^0.5.16",
"tailwindcss": "^3.4.17"
}
}

View file

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
<rect width="100" height="100" rx="20" fill="#f97316"/>
<rect x="20" y="25" width="60" height="40" rx="4" fill="white"/>
<rect x="25" y="30" width="50" height="30" rx="2" fill="#0a0a0f"/>
<rect x="30" y="35" width="30" height="4" rx="1" fill="#f97316"/>
<rect x="30" y="42" width="40" height="2" rx="1" fill="#6b7280"/>
<rect x="30" y="47" width="35" height="2" rx="1" fill="#6b7280"/>
<rect x="30" y="52" width="25" height="2" rx="1" fill="#6b7280"/>
<circle cx="50" cy="75" r="5" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 583 B

View file

@ -0,0 +1,74 @@
---
import Container from '@manacore/shared-landing-ui/atoms/Container.astro';
---
<footer class="bg-background-card py-12 border-t border-border">
<Container>
<div class="grid md:grid-cols-4 gap-8 mb-8">
<!-- Brand -->
<div class="md:col-span-2">
<a href="/" class="flex items-center gap-2 text-xl font-bold text-text-primary mb-4">
<span class="text-2xl">🎬</span>
<span>Presi</span>
</a>
<p class="text-text-secondary text-sm max-w-md">
Erstelle beeindruckende Präsentationen in Minuten. Mit KI-Unterstützung, schönen Themes und einfacher Bedienung.
</p>
</div>
<!-- Links -->
<div>
<h4 class="text-text-muted text-xs uppercase tracking-wider mb-4">Produkt</h4>
<ul class="space-y-2">
<li>
<a href="#features" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Features
</a>
</li>
<li>
<a href="https://presi.manacore.app" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Web App
</a>
</li>
<li>
<a href="#download" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Mobile App
</a>
</li>
</ul>
</div>
<!-- Legal -->
<div>
<h4 class="text-text-muted text-xs uppercase tracking-wider mb-4">Rechtliches</h4>
<ul class="space-y-2">
<li>
<a href="/privacy" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Datenschutz
</a>
</li>
<li>
<a href="/terms" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
AGB
</a>
</li>
<li>
<a href="/imprint" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Impressum
</a>
</li>
</ul>
</div>
</div>
<!-- Copyright -->
<div class="pt-8 border-t border-border text-center">
<p class="text-text-muted text-sm">
© 2025 Presi. Alle Rechte vorbehalten.
</p>
<p class="text-text-muted text-xs mt-1">
Ein Produkt von <a href="https://manacore.ai" class="hover:text-primary transition-colors">ManaCore</a>
</p>
</div>
</Container>
</footer>

View file

@ -0,0 +1,36 @@
---
import Container from '@manacore/shared-landing-ui/atoms/Container.astro';
import Button from '@manacore/shared-landing-ui/atoms/Button.astro';
---
<nav class="fixed top-0 left-0 right-0 z-50 bg-background-page/80 backdrop-blur-lg border-b border-border">
<Container>
<div class="flex items-center justify-between h-16">
<!-- Logo -->
<a href="/" class="flex items-center gap-2 text-xl font-bold text-text-primary">
<span class="text-2xl">🎬</span>
<span>Presi</span>
</a>
<!-- Desktop Navigation -->
<div class="hidden md:flex items-center gap-8">
<a href="#features" class="text-text-secondary hover:text-text-primary transition-colors">
Features
</a>
<a href="#how-it-works" class="text-text-secondary hover:text-text-primary transition-colors">
So funktioniert's
</a>
<a href="#faq" class="text-text-secondary hover:text-text-primary transition-colors">
FAQ
</a>
</div>
<!-- CTA -->
<div class="flex items-center gap-4">
<Button href="https://presi.manacore.app" variant="primary" size="sm">
App öffnen
</Button>
</div>
</div>
</Container>
</nav>

View file

@ -0,0 +1,50 @@
---
import '../styles/global.css';
interface Props {
title: string;
description?: string;
}
const {
title,
description = 'Presi - Erstelle beeindruckende Präsentationen mit KI-Unterstützung',
} = Astro.props;
---
<!doctype html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content={description} />
<meta name="generator" content={Astro.generator} />
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<!-- Open Graph -->
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:type" content="website" />
<meta property="og:locale" content="de_DE" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap"
rel="stylesheet"
/>
<title>{title}</title>
</head>
<body class="min-h-screen bg-background-page text-text-primary antialiased">
<slot />
</body>
</html>

View file

@ -0,0 +1,224 @@
---
import Layout from '../layouts/Layout.astro';
import Navigation from '../components/Navigation.astro';
import Footer from '../components/Footer.astro';
// Shared components
import HeroSection from '@manacore/shared-landing-ui/sections/HeroSection.astro';
import FeatureSection from '@manacore/shared-landing-ui/sections/FeatureSection.astro';
import CTASection from '@manacore/shared-landing-ui/sections/CTASection.astro';
import FAQSection from '@manacore/shared-landing-ui/sections/FAQSection.astro';
import Container from '@manacore/shared-landing-ui/atoms/Container.astro';
// Feature data
const features = [
{
icon: '🎨',
title: 'Schöne Themes',
description: 'Wähle aus professionellen Themes oder erstelle dein eigenes Design.',
},
{
icon: '📱',
title: 'Überall verfügbar',
description: 'Native Apps für iOS, Android und Web - deine Präsentationen sind immer dabei.',
},
{
icon: '🔗',
title: 'Einfach teilen',
description: 'Teile Präsentationen per Link - ohne Download oder Account nötig.',
},
{
icon: '🖥️',
title: 'Präsentationsmodus',
description: 'Vollbild-Präsentation mit Tastatursteuerung und Timer.',
},
{
icon: '📝',
title: 'Verschiedene Layouts',
description: 'Titel, Inhalt, Bilder, Split-Views - für jeden Zweck das richtige Layout.',
},
{
icon: '☁️',
title: 'Cloud-Sync',
description: 'Automatische Synchronisierung auf allen Geräten.',
},
];
// How it works steps
const steps = [
{
number: '1',
title: 'Deck erstellen',
description: 'Starte mit einem leeren Deck oder wähle ein Template.',
},
{
number: '2',
title: 'Slides hinzufügen',
description: 'Füge Titel, Text, Bilder und Bullet Points hinzu.',
},
{
number: '3',
title: 'Theme wählen',
description: 'Wähle ein professionelles Theme für deine Präsentation.',
},
{
number: '4',
title: 'Präsentieren & Teilen',
description: 'Präsentiere im Vollbild oder teile per Link.',
},
];
// FAQ data
const faqs = [
{
question: 'Ist Presi kostenlos?',
answer: 'Ja, Presi ist kostenlos nutzbar. Du kannst unbegrenzt Präsentationen erstellen, teilen und präsentieren.',
},
{
question: 'Kann ich Präsentationen offline bearbeiten?',
answer: 'Mit der mobilen App kannst du deine Präsentationen auch offline bearbeiten. Änderungen werden synchronisiert, sobald du wieder online bist.',
},
{
question: 'Wie teile ich eine Präsentation?',
answer: 'Klicke auf "Teilen" und erstelle einen Link. Jeder mit dem Link kann die Präsentation ansehen - ohne Account oder Download.',
},
{
question: 'Welche Slide-Typen gibt es?',
answer: 'Presi unterstützt Titel-Slides, Content-Slides mit Text und Bullet Points, Bild-Slides und Split-Views mit Text und Bild nebeneinander.',
},
{
question: 'Kann ich eigene Themes erstellen?',
answer: 'Aktuell bieten wir vorgefertigte Themes. Custom Themes sind für zukünftige Versionen geplant.',
},
];
---
<Layout title="Presi - Präsentationen erstellen leicht gemacht">
<Navigation />
<main class="pt-16">
<!-- Hero Section -->
<HeroSection
title="Präsentationen erstellen leicht gemacht"
subtitle="Erstelle beeindruckende Präsentationen in Minuten. Mit schönen Themes, einfacher Bedienung und überall verfügbar."
variant="centered"
primaryCta={{
text: 'Kostenlos starten',
href: 'https://presi.manacore.app',
}}
secondaryCta={{
text: 'Features ansehen',
href: '#features',
variant: 'secondary',
}}
trustBadges={[
{ icon: '🎨', text: 'Schöne Themes' },
{ icon: '🆓', text: '100% Kostenlos' },
{ icon: '📱', text: 'iOS & Android' },
]}
/>
<!-- How it works Section -->
<section id="how-it-works" class="py-20 bg-background-card">
<Container>
<div class="text-center mb-12">
<h2 class="text-3xl md:text-4xl font-bold text-text-primary mb-4">
So einfach geht's
</h2>
<p class="text-text-secondary text-lg max-w-2xl mx-auto">
In vier Schritten zur perfekten Präsentation
</p>
</div>
<div class="grid md:grid-cols-4 gap-6">
{steps.map((step, index) => (
<div class="relative">
<div class="bg-background-page rounded-2xl p-6 border border-border hover:border-primary/30 transition-all duration-300 h-full">
<div class="w-12 h-12 rounded-full bg-primary/10 flex items-center justify-center mb-4">
<span class="text-primary font-bold text-xl">{step.number}</span>
</div>
<h3 class="text-text-primary font-semibold text-lg mb-2">{step.title}</h3>
<p class="text-text-secondary text-sm">{step.description}</p>
</div>
{index < steps.length - 1 && (
<div class="hidden md:block absolute top-1/2 -right-3 transform -translate-y-1/2 text-text-muted">
</div>
)}
</div>
))}
</div>
</Container>
</section>
<!-- Features Section -->
<FeatureSection
id="features"
title="Alles was du für großartige Präsentationen brauchst"
subtitle="Presi vereint einfache Bedienung mit professionellen Features"
features={features}
columns={3}
variant="cards"
/>
<!-- Preview Section -->
<section class="py-20 bg-background-card">
<Container size="md">
<div class="text-center">
<h2 class="text-3xl md:text-4xl font-bold text-text-primary mb-6">
Präsentiere wie ein Profi
</h2>
<p class="text-text-secondary text-lg mb-8 leading-relaxed">
Der Präsentationsmodus bietet alles was du brauchst: Vollbild-Ansicht,
Tastaturnavigation mit Pfeiltasten, Timer für perfektes Timing und
Speaker Notes für deine Notizen.
</p>
<div class="bg-background-page rounded-2xl p-8 border border-border">
<div class="flex flex-wrap justify-center gap-4 text-sm text-text-secondary">
<div class="flex items-center gap-2">
<kbd class="px-2 py-1 bg-background-card rounded border border-border">←</kbd>
<kbd class="px-2 py-1 bg-background-card rounded border border-border">→</kbd>
<span>Navigation</span>
</div>
<div class="flex items-center gap-2">
<kbd class="px-2 py-1 bg-background-card rounded border border-border">F</kbd>
<span>Vollbild</span>
</div>
<div class="flex items-center gap-2">
<kbd class="px-2 py-1 bg-background-card rounded border border-border">ESC</kbd>
<span>Beenden</span>
</div>
</div>
</div>
</div>
</Container>
</section>
<!-- FAQ Section -->
<FAQSection
id="faq"
title="Häufig gestellte Fragen"
subtitle="Alles was du über Presi wissen musst"
faqs={faqs}
/>
<!-- CTA Section -->
<CTASection
id="download"
title="Bereit für bessere Präsentationen?"
subtitle="Starte jetzt kostenlos und erstelle deine erste Präsentation in Minuten."
primaryCta={{
text: 'Web App öffnen',
href: 'https://presi.manacore.app',
}}
secondaryCta={{
text: 'Mobile App laden',
href: '#',
variant: 'secondary',
}}
variant="highlighted"
/>
</main>
<Footer />
</Layout>

View file

@ -0,0 +1,101 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
:root {
/* Primary colors - Orange */
--color-primary: #f97316;
--color-primary-hover: #fb923c;
--color-primary-glow: rgba(249, 115, 22, 0.3);
/* Background colors - Dark theme */
--color-background-page: #0a0a0f;
--color-background-card: #141419;
--color-background-card-hover: #1c1c24;
/* Text colors */
--color-text-primary: #f9fafb;
--color-text-secondary: #d1d5db;
--color-text-muted: #6b7280;
/* Border colors */
--color-border: #27272a;
--color-border-hover: #3f3f46;
}
/* Apply CSS custom properties to Tailwind classes */
.bg-primary {
background-color: var(--color-primary);
}
.bg-primary\/10 {
background-color: rgba(249, 115, 22, 0.1);
}
.bg-background-page {
background-color: var(--color-background-page);
}
.bg-background-card {
background-color: var(--color-background-card);
}
.text-primary {
color: var(--color-primary);
}
.text-text-primary {
color: var(--color-text-primary);
}
.text-text-secondary {
color: var(--color-text-secondary);
}
.text-text-muted {
color: var(--color-text-muted);
}
.border-border {
border-color: var(--color-border);
}
.border-primary {
border-color: var(--color-primary);
}
.border-primary\/30 {
border-color: rgba(249, 115, 22, 0.3);
}
/* Smooth scrolling */
html {
scroll-behavior: smooth;
}
/* Custom animations */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in {
animation: fadeIn 0.5s ease-out forwards;
}
/* Button hover effects */
.btn-primary {
background: linear-gradient(135deg, var(--color-primary) 0%, #ea580c 100%);
transition: all 0.3s ease;
}
.btn-primary:hover {
box-shadow: 0 0 30px var(--color-primary-glow);
transform: translateY(-2px);
}
/* Card hover effects */
.card-hover {
transition: all 0.3s ease;
}
.card-hover:hover {
border-color: rgba(249, 115, 22, 0.3);
box-shadow: 0 0 40px rgba(249, 115, 22, 0.1);
}

View file

@ -0,0 +1,36 @@
/** @type {import('tailwindcss').Config} */
export default {
content: [
'./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}',
'../../../../packages/shared-landing-ui/src/**/*.{astro,html,js,jsx,ts,tsx}',
],
theme: {
extend: {
colors: {
primary: {
DEFAULT: '#f97316',
hover: '#fb923c',
glow: 'rgba(249, 115, 22, 0.3)',
},
background: {
page: '#0a0a0f',
card: '#141419',
'card-hover': '#1c1c24',
},
text: {
primary: '#f9fafb',
secondary: '#d1d5db',
muted: '#6b7280',
},
border: {
DEFAULT: '#27272a',
hover: '#3f3f46',
},
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
},
},
},
plugins: [],
};

View file

@ -0,0 +1,9 @@
{
"extends": "astro/tsconfigs/strict",
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
}
}
}

View file

@ -0,0 +1,3 @@
name = "presi-landing"
compatibility_date = "2024-12-01"
pages_build_output_dir = "dist"

View file

@ -9,6 +9,7 @@
"astro": "astro"
},
"dependencies": {
"@manacore/shared-landing-ui": "workspace:*",
"astro": "^5.3.4"
},
"devDependencies": {

View file

@ -0,0 +1,74 @@
---
import Container from '@manacore/shared-landing-ui/atoms/Container.astro';
---
<footer class="bg-background-card py-12 border-t border-border">
<Container>
<div class="grid md:grid-cols-4 gap-8 mb-8">
<!-- Brand -->
<div class="md:col-span-2">
<a href="/" class="flex items-center gap-2 text-xl font-bold text-text-primary mb-4">
<span class="text-2xl">📖</span>
<span>Zitare</span>
</a>
<p class="text-text-secondary text-sm max-w-md">
Deine tägliche Quelle für Inspiration und Weisheit. Entdecke über 1000 Zitate von den größten Denkern der Geschichte.
</p>
</div>
<!-- Links -->
<div>
<h4 class="text-text-muted text-xs uppercase tracking-wider mb-4">Produkt</h4>
<ul class="space-y-2">
<li>
<a href="#features" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Features
</a>
</li>
<li>
<a href="https://zitare.manacore.app" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Web App
</a>
</li>
<li>
<a href="#download" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Mobile App
</a>
</li>
</ul>
</div>
<!-- Legal -->
<div>
<h4 class="text-text-muted text-xs uppercase tracking-wider mb-4">Rechtliches</h4>
<ul class="space-y-2">
<li>
<a href="/privacy" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Datenschutz
</a>
</li>
<li>
<a href="/terms" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
AGB
</a>
</li>
<li>
<a href="/imprint" class="text-text-secondary hover:text-text-primary text-sm transition-colors">
Impressum
</a>
</li>
</ul>
</div>
</div>
<!-- Copyright -->
<div class="pt-8 border-t border-border text-center">
<p class="text-text-muted text-sm">
© 2025 Zitare. Alle Rechte vorbehalten.
</p>
<p class="text-text-muted text-xs mt-1">
Ein Produkt von <a href="https://manacore.ai" class="hover:text-primary transition-colors">ManaCore</a>
</p>
</div>
</Container>
</footer>

View file

@ -0,0 +1,36 @@
---
import Container from '@manacore/shared-landing-ui/atoms/Container.astro';
import Button from '@manacore/shared-landing-ui/atoms/Button.astro';
---
<nav class="fixed top-0 left-0 right-0 z-50 bg-background-page/80 backdrop-blur-lg border-b border-border">
<Container>
<div class="flex items-center justify-between h-16">
<!-- Logo -->
<a href="/" class="flex items-center gap-2 text-xl font-bold text-text-primary">
<span class="text-2xl">📖</span>
<span>Zitare</span>
</a>
<!-- Desktop Navigation -->
<div class="hidden md:flex items-center gap-8">
<a href="#features" class="text-text-secondary hover:text-text-primary transition-colors">
Features
</a>
<a href="#quotes" class="text-text-secondary hover:text-text-primary transition-colors">
Zitate
</a>
<a href="#about" class="text-text-secondary hover:text-text-primary transition-colors">
Über uns
</a>
</div>
<!-- CTA -->
<div class="flex items-center gap-4">
<Button href="https://zitare.manacore.app" variant="primary" size="sm">
App öffnen
</Button>
</div>
</div>
</Container>
</nav>

View file

@ -1,75 +1,50 @@
---
import '../styles/global.css';
interface Props {
title: string;
description?: string;
}
const { title, description = 'Discover inspiring quotes from great minds' } = Astro.props;
const {
title,
description = 'Zitare - Inspirierende Zitate von großen Denkern',
} = Astro.props;
---
<!doctype html>
<html lang="en">
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content={description} />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="generator" content={Astro.generator} />
<!-- Favicon -->
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<!-- Open Graph -->
<meta property="og:title" content={title} />
<meta property="og:description" content={description} />
<meta property="og:type" content="website" />
<meta property="og:locale" content="de_DE" />
<!-- Twitter -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content={title} />
<meta name="twitter:description" content={description} />
<!-- Fonts -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Merriweather:ital,wght@0,400;1,400&display=swap"
rel="stylesheet"
/>
<title>{title}</title>
</head>
<body>
<nav class="bg-gradient-to-r from-purple-600 to-indigo-600 text-white">
<div class="container mx-auto px-6 py-4">
<div class="flex items-center justify-between">
<a href="/" class="text-2xl font-bold">📖 Quotes</a>
<div class="flex gap-6">
<a href="/#features" class="hover:opacity-80">Features</a>
<a href="/#about" class="hover:opacity-80">About</a>
<a
href="/app"
class="bg-white text-purple-600 px-4 py-2 rounded-lg font-semibold hover:opacity-90"
>
Open App
</a>
</div>
</div>
</div>
</nav>
<body class="min-h-screen bg-background-page text-text-primary antialiased">
<slot />
<footer class="bg-gray-900 text-white py-12">
<div class="container mx-auto px-6 text-center">
<p>&copy; 2025 Quotes App. All rights reserved.</p>
<div class="mt-4 flex justify-center gap-6">
<a href="/privacy" class="hover:opacity-80">Privacy</a>
<a href="/terms" class="hover:opacity-80">Terms</a>
<a href="/contact" class="hover:opacity-80">Contact</a>
</div>
</div>
</footer>
</body>
</html>
<style is:global>
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
font-family: system-ui, sans-serif;
background: #ffffff;
}
body {
min-height: 100vh;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
</style>

View file

@ -1,122 +1,196 @@
---
import Layout from '../layouts/Layout.astro';
import Navigation from '../components/Navigation.astro';
import Footer from '../components/Footer.astro';
// Shared components
import HeroSection from '@manacore/shared-landing-ui/sections/HeroSection.astro';
import FeatureSection from '@manacore/shared-landing-ui/sections/FeatureSection.astro';
import CTASection from '@manacore/shared-landing-ui/sections/CTASection.astro';
import FAQSection from '@manacore/shared-landing-ui/sections/FAQSection.astro';
import Container from '@manacore/shared-landing-ui/atoms/Container.astro';
// Feature data
const features = [
{
icon: '📱',
title: 'Mobile App',
description: 'Native iOS und Android App mit Offline-Unterstützung und elegantem Design.',
},
{
icon: '🌐',
title: 'Web-Zugang',
description: 'Greife von jedem Browser auf deine Lieblingszitate zu - überall und jederzeit.',
},
{
icon: '📚',
title: '1000+ Zitate',
description: 'Kuratierte Sammlung von Philosophen, Wissenschaftlern und Vordenkern.',
},
{
icon: '⭐',
title: 'Favoriten',
description: 'Speichere deine Lieblingszitate und greife sofort darauf zu.',
},
{
icon: '🔍',
title: 'Suche & Filter',
description: 'Finde Zitate nach Autor, Kategorie oder Stichwort.',
},
{
icon: '🎨',
title: 'Schönes Design',
description: 'Elegante Oberfläche, die den Inhalt in den Vordergrund stellt.',
},
];
// Sample quotes for display
const sampleQuotes = [
{
text: 'Das Leben ist das, was passiert, während du beschäftigt bist, andere Pläne zu machen.',
author: 'John Lennon',
},
{
text: 'Der einzige Weg, großartige Arbeit zu leisten, ist zu lieben, was du tust.',
author: 'Steve Jobs',
},
{
text: 'Es ist nicht wichtig, wie langsam du gehst, solange du nicht stehen bleibst.',
author: 'Konfuzius',
},
];
// FAQ data
const faqs = [
{
question: 'Ist Zitare kostenlos?',
answer: 'Ja, Zitare ist kostenlos nutzbar. Du hast Zugriff auf alle Zitate und Features ohne Abo oder versteckte Kosten.',
},
{
question: 'Welche Autoren sind in der Sammlung?',
answer: 'Unsere Sammlung umfasst über 1000 Zitate von Philosophen wie Sokrates und Nietzsche, Wissenschaftlern wie Einstein und Curie, sowie modernen Denkern und Führungspersönlichkeiten.',
},
{
question: 'Kann ich Zitate offline lesen?',
answer: 'Ja, mit der mobilen App werden deine Lieblingszitate lokal gespeichert. So hast du auch ohne Internetverbindung Zugriff auf Inspiration.',
},
{
question: 'Wie kann ich Zitate teilen?',
answer: 'Jedes Zitat kann direkt aus der App geteilt werden - per WhatsApp, Instagram, E-Mail oder als Bild für Social Media.',
},
{
question: 'Werden neue Zitate hinzugefügt?',
answer: 'Ja, wir erweitern unsere Sammlung regelmäßig mit neuen, sorgfältig ausgewählten Zitaten aus verschiedenen Epochen und Kulturen.',
},
];
---
<Layout title="Quotes - Inspiring Words from Great Minds">
<main>
<Layout title="Zitare - Inspirierende Zitate von großen Denkern">
<Navigation />
<main class="pt-16">
<!-- Hero Section -->
<section class="bg-gradient-to-br from-purple-50 to-indigo-100 py-20">
<div class="container mx-auto px-6 text-center">
<h1 class="text-5xl md:text-6xl font-bold text-gray-900 mb-6">Discover Inspiring Quotes</h1>
<p class="text-xl md:text-2xl text-gray-700 mb-8 max-w-2xl mx-auto">
Explore wisdom from history's greatest thinkers. Available on mobile, web, and everywhere
you need inspiration.
</p>
<div class="flex gap-4 justify-center flex-wrap">
<a
href="/app"
class="bg-purple-600 text-white px-8 py-4 rounded-lg text-lg font-semibold hover:bg-purple-700 transition"
>
Open Web App
</a>
<a
href="#features"
class="bg-white text-purple-600 px-8 py-4 rounded-lg text-lg font-semibold hover:bg-gray-50 transition border-2 border-purple-600"
>
Learn More
</a>
<HeroSection
title="Entdecke inspirierende Zitate"
subtitle="Tauche ein in die Weisheit der größten Denker der Geschichte. Verfügbar auf Mobile, Web und überall wo du Inspiration brauchst."
variant="centered"
primaryCta={{
text: 'Jetzt entdecken',
href: 'https://zitare.manacore.app',
}}
secondaryCta={{
text: 'Features ansehen',
href: '#features',
variant: 'secondary',
}}
trustBadges={[
{ icon: '📚', text: '1000+ Zitate' },
{ icon: '🆓', text: '100% Kostenlos' },
{ icon: '📱', text: 'iOS & Android' },
]}
/>
<!-- Sample Quotes Section -->
<section id="quotes" class="py-20 bg-background-card">
<Container>
<div class="text-center mb-12">
<h2 class="text-3xl md:text-4xl font-bold text-text-primary mb-4">
Lass dich inspirieren
</h2>
<p class="text-text-secondary text-lg max-w-2xl mx-auto">
Jeden Tag ein neues Zitat - Weisheit die bewegt
</p>
</div>
</div>
<div class="grid md:grid-cols-3 gap-6">
{sampleQuotes.map((quote) => (
<div class="bg-background-page rounded-2xl p-8 border border-border hover:border-primary/30 transition-all duration-300 group">
<div class="text-4xl text-primary/30 mb-4 group-hover:text-primary/50 transition-colors">"</div>
<p class="quote-text text-text-primary text-lg mb-6 leading-relaxed">
{quote.text}
</p>
<p class="text-text-muted text-sm">— {quote.author}</p>
</div>
))}
</div>
</Container>
</section>
<!-- Features Section -->
<section id="features" class="py-20">
<div class="container mx-auto px-6">
<h2 class="text-4xl font-bold text-center mb-12 text-gray-900">Features</h2>
<div class="grid md:grid-cols-3 gap-8">
<div class="text-center p-6">
<div class="text-5xl mb-4">📱</div>
<h3 class="text-xl font-bold mb-2">Mobile App</h3>
<p class="text-gray-600">
Native iOS and Android app with offline support and beautiful design.
</p>
</div>
<div class="text-center p-6">
<div class="text-5xl mb-4">🌐</div>
<h3 class="text-xl font-bold mb-2">Web Access</h3>
<p class="text-gray-600">Access your favorite quotes from any browser, anywhere.</p>
</div>
<div class="text-center p-6">
<div class="text-5xl mb-4">📚</div>
<h3 class="text-xl font-bold mb-2">1000+ Quotes</h3>
<p class="text-gray-600">
Curated collection from philosophers, scientists, and leaders.
</p>
</div>
<div class="text-center p-6">
<div class="text-5xl mb-4">⭐</div>
<h3 class="text-xl font-bold mb-2">Favorites</h3>
<p class="text-gray-600">Save your favorite quotes and access them instantly.</p>
</div>
<div class="text-center p-6">
<div class="text-5xl mb-4">🔍</div>
<h3 class="text-xl font-bold mb-2">Search & Filter</h3>
<p class="text-gray-600">Find quotes by author, category, or keyword.</p>
</div>
<div class="text-center p-6">
<div class="text-5xl mb-4">🎨</div>
<h3 class="text-xl font-bold mb-2">Beautiful Design</h3>
<p class="text-gray-600">Elegant interface that puts content first.</p>
</div>
</div>
</div>
</section>
<FeatureSection
id="features"
title="Alles was du für tägliche Inspiration brauchst"
subtitle="Zitare verbindet klassische Weisheit mit moderner Technologie"
features={features}
columns={3}
variant="cards"
/>
<!-- About Section -->
<section id="about" class="bg-gray-50 py-20">
<div class="container mx-auto px-6">
<div class="max-w-3xl mx-auto text-center">
<h2 class="text-4xl font-bold mb-6 text-gray-900">About Quotes</h2>
<p class="text-xl text-gray-700 mb-6">
Quotes is your daily source of inspiration and wisdom. We've carefully curated over 1000
quotes from history's most influential thinkers, philosophers, scientists, and leaders.
<section id="about" class="py-20 bg-background-card">
<Container size="md">
<div class="text-center">
<h2 class="text-3xl md:text-4xl font-bold text-text-primary mb-6">
Über Zitare
</h2>
<p class="text-text-secondary text-lg mb-6 leading-relaxed">
Zitare ist deine tägliche Quelle für Inspiration und Weisheit. Wir haben über 1000 Zitate
von den einflussreichsten Denkern, Philosophen, Wissenschaftlern und Führungspersönlichkeiten
der Geschichte sorgfältig zusammengestellt.
</p>
<p class="text-lg text-gray-600">
Whether you're looking for motivation, wisdom, or just a moment of reflection, Quotes
brings you timeless words that inspire and enlighten.
<p class="text-text-secondary text-lg leading-relaxed">
Ob du Motivation suchst, nach Weisheit strebst oder einfach einen Moment der Reflexion
brauchst - Zitare bringt dir zeitlose Worte, die inspirieren und erleuchten.
</p>
</div>
</div>
</Container>
</section>
<!-- FAQ Section -->
<FAQSection
id="faq"
title="Häufig gestellte Fragen"
subtitle="Alles was du über Zitare wissen musst"
faqs={faqs}
/>
<!-- CTA Section -->
<section class="bg-gradient-to-r from-purple-600 to-indigo-600 text-white py-20">
<div class="container mx-auto px-6 text-center">
<h2 class="text-4xl font-bold mb-6">Ready to Get Inspired?</h2>
<p class="text-xl mb-8 max-w-2xl mx-auto">
Start exploring thousands of inspiring quotes today.
</p>
<div class="flex gap-4 justify-center flex-wrap">
<a
href="/app"
class="bg-white text-purple-600 px-8 py-4 rounded-lg text-lg font-semibold hover:bg-gray-100 transition"
>
Launch Web App
</a>
<a
href="#"
class="bg-purple-800 text-white px-8 py-4 rounded-lg text-lg font-semibold hover:bg-purple-900 transition"
>
Download Mobile App
</a>
</div>
</div>
</section>
<CTASection
id="download"
title="Bereit für tägliche Inspiration?"
subtitle="Starte jetzt und entdecke die Weisheit der größten Denker. Kostenlos und ohne Anmeldung."
primaryCta={{
text: 'Web App öffnen',
href: 'https://zitare.manacore.app',
}}
secondaryCta={{
text: 'Mobile App laden',
href: '#',
variant: 'secondary',
}}
variant="highlighted"
/>
</main>
<Footer />
</Layout>

View file

@ -0,0 +1,99 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
/* Zitare Theme CSS Variables - Purple/Indigo */
:root {
/* Primary colors - Zitare Purple */
--color-primary: #8b5cf6;
--color-primary-hover: #a78bfa;
--color-primary-glow: rgba(139, 92, 246, 0.3);
/* Text colors */
--color-text-primary: #f9fafb;
--color-text-secondary: #d1d5db;
--color-text-muted: #6b7280;
/* Background colors */
--color-background-page: #0f0d1a;
--color-background-card: #1a1625;
--color-background-card-hover: #252033;
/* Border colors */
--color-border: #2d2640;
--color-border-hover: #3d3555;
}
/* Base styles */
html {
scroll-behavior: smooth;
}
body {
font-family: 'Inter', system-ui, sans-serif;
background-color: var(--color-background-page);
color: var(--color-text-primary);
line-height: 1.6;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: var(--color-background-card);
}
::-webkit-scrollbar-thumb {
background: var(--color-border);
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--color-border-hover);
}
/* Selection */
::selection {
background-color: var(--color-primary);
color: white;
}
/* Focus styles */
:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
/* Gradient text */
.text-gradient {
background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
/* Animation utilities */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fadeIn {
animation: fadeIn 0.6s ease-out forwards;
}
/* Quote styling */
.quote-text {
font-family: 'Merriweather', Georgia, serif;
font-style: italic;
line-height: 1.8;
}

View file

@ -0,0 +1,38 @@
/** @type {import('tailwindcss').Config} */
export default {
content: [
'./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}',
'../../../../packages/shared-landing-ui/src/**/*.{astro,html,js,jsx,ts,tsx}',
],
theme: {
extend: {
colors: {
// Zitare Purple/Indigo Theme
primary: {
DEFAULT: '#8b5cf6',
hover: '#a78bfa',
glow: 'rgba(139, 92, 246, 0.3)',
},
background: {
page: '#0f0d1a',
card: '#1a1625',
'card-hover': '#252033',
},
text: {
primary: '#f9fafb',
secondary: '#d1d5db',
muted: '#6b7280',
},
border: {
DEFAULT: '#2d2640',
hover: '#3d3555',
},
},
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
serif: ['Merriweather', 'Georgia', 'serif'],
},
},
},
plugins: [],
};

View file

@ -49,6 +49,7 @@
"presi:dev": "turbo run dev --filter=presi...",
"dev:presi:mobile": "pnpm --filter @presi/mobile dev",
"dev:presi:web": "pnpm --filter @presi/web dev",
"dev:presi:landing": "pnpm --filter @presi/landing dev",
"dev:presi:backend": "pnpm --filter @presi/backend dev",
"dev:presi:app": "turbo run dev --filter=@presi/web --filter=@presi/backend",
"presi:db:push": "pnpm --filter @presi/backend db:push",
@ -99,7 +100,8 @@
"deploy:landing:manacore": "pnpm --filter @manacore/landing build && npx wrangler pages deploy apps/manacore/apps/landing/dist --project-name=manacore-landing",
"deploy:landing:manadeck": "pnpm --filter @manadeck/landing build && npx wrangler pages deploy apps/manadeck/apps/landing/dist --project-name=manadeck-landing",
"deploy:landing:zitare": "pnpm --filter @zitare/landing build && npx wrangler pages deploy apps/zitare/apps/landing/dist --project-name=zitare-landing",
"deploy:landing:all": "pnpm deploy:landing:chat && pnpm deploy:landing:picture && pnpm deploy:landing:manacore && pnpm deploy:landing:manadeck && pnpm deploy:landing:zitare",
"deploy:landing:presi": "pnpm --filter @presi/landing build && npx wrangler pages deploy apps/presi/apps/landing/dist --project-name=presi-landing",
"deploy:landing:all": "pnpm deploy:landing:chat && pnpm deploy:landing:picture && pnpm deploy:landing:manacore && pnpm deploy:landing:manadeck && pnpm deploy:landing:zitare && pnpm deploy:landing:presi",
"cf:login": "npx wrangler login",
"cf:projects:list": "npx wrangler pages project list",
"cf:projects:create": "echo 'Creating Cloudflare Pages projects...' && npx wrangler pages project create chat-landing --production-branch=main && npx wrangler pages project create picture-landing --production-branch=main && npx wrangler pages project create manacore-landing --production-branch=main && npx wrangler pages project create manadeck-landing --production-branch=main && npx wrangler pages project create zitare-landing --production-branch=main"

640
pnpm-lock.yaml generated
View file

@ -30,6 +30,258 @@ importers:
specifier: ^4.51.0
version: 4.51.0
apps/calendar:
devDependencies:
typescript:
specifier: ^5.9.3
version: 5.9.3
apps/calendar/apps/backend:
dependencies:
'@calendar/shared':
specifier: workspace:*
version: link:../../packages/shared
'@manacore/shared-nestjs-auth':
specifier: workspace:*
version: link:../../../../packages/shared-nestjs-auth
'@nestjs/common':
specifier: ^10.4.15
version: 10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/config':
specifier: ^3.3.0
version: 3.3.0(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(rxjs@7.8.2)
'@nestjs/core':
specifier: ^10.4.15
version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(@nestjs/websockets@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/platform-express':
specifier: ^10.4.15
version: 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)
'@nestjs/schedule':
specifier: ^4.1.2
version: 4.1.2(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)
class-transformer:
specifier: ^0.5.1
version: 0.5.1
class-validator:
specifier: ^0.14.1
version: 0.14.3
dotenv:
specifier: ^16.4.7
version: 16.6.1
drizzle-kit:
specifier: ^0.30.2
version: 0.30.6
drizzle-orm:
specifier: ^0.38.3
version: 0.38.4(@opentelemetry/api@1.9.0)(@types/react@19.2.7)(expo-sqlite@15.2.14(expo@54.0.25)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(kysely@0.28.8)(postgres@3.4.7)(react@19.1.0)
ical.js:
specifier: ^2.1.0
version: 2.2.1
postgres:
specifier: ^3.4.5
version: 3.4.7
reflect-metadata:
specifier: ^0.2.2
version: 0.2.2
rxjs:
specifier: ^7.8.1
version: 7.8.2
tsdav:
specifier: ^2.1.1
version: 2.1.6
devDependencies:
'@nestjs/cli':
specifier: ^10.4.9
version: 10.4.9(esbuild@0.19.12)
'@nestjs/schematics':
specifier: ^10.2.3
version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3)
'@types/express':
specifier: ^5.0.0
version: 5.0.5
'@types/node':
specifier: ^22.10.2
version: 22.19.1
'@typescript-eslint/eslint-plugin':
specifier: ^8.18.1
version: 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser':
specifier: ^8.18.1
version: 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint:
specifier: ^9.17.0
version: 9.39.1(jiti@2.6.1)
eslint-config-prettier:
specifier: ^9.1.0
version: 9.1.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-prettier:
specifier: ^5.2.1
version: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@9.1.2(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))(prettier@3.6.2)
prettier:
specifier: ^3.4.2
version: 3.6.2
source-map-support:
specifier: ^0.5.21
version: 0.5.21
ts-loader:
specifier: ^9.5.1
version: 9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12))
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3)
tsconfig-paths:
specifier: ^4.2.0
version: 4.2.0
tsx:
specifier: ^4.19.2
version: 4.20.6
typescript:
specifier: ^5.7.2
version: 5.9.3
apps/calendar/apps/landing:
dependencies:
'@astrojs/check':
specifier: ^0.9.0
version: 0.9.5(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)
'@manacore/shared-landing-ui':
specifier: workspace:*
version: link:../../../../packages/shared-landing-ui
astro:
specifier: ^5.16.0
version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
typescript:
specifier: ^5.9.2
version: 5.9.3
devDependencies:
'@astrojs/tailwind':
specifier: ^6.0.2
version: 6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@20.19.25)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3))
'@tailwindcss/typography':
specifier: ^0.5.18
version: 0.5.19(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))
'@types/node':
specifier: ^20.0.0
version: 20.19.25
eslint:
specifier: ^9.0.0
version: 9.39.1(jiti@2.6.1)
eslint-config-prettier:
specifier: ^9.1.0
version: 9.1.2(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-astro:
specifier: ^1.0.0
version: 1.5.0(eslint@9.39.1(jiti@2.6.1))
prettier:
specifier: ^3.6.2
version: 3.6.2
prettier-plugin-astro:
specifier: ^0.14.1
version: 0.14.1
prettier-plugin-tailwindcss:
specifier: ^0.6.14
version: 0.6.14(prettier-plugin-astro@0.14.1)(prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.44.0))(prettier@3.6.2)
tailwindcss:
specifier: ^3.4.0
version: 3.4.18(tsx@4.20.6)(yaml@2.8.1)
apps/calendar/apps/web:
dependencies:
'@calendar/shared':
specifier: workspace:*
version: link:../../packages/shared
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../../packages/shared-auth
'@manacore/shared-auth-ui':
specifier: workspace:*
version: link:../../../../packages/shared-auth-ui
'@manacore/shared-branding':
specifier: workspace:*
version: link:../../../../packages/shared-branding
'@manacore/shared-feedback-service':
specifier: workspace:*
version: link:../../../../packages/shared-feedback-service
'@manacore/shared-feedback-ui':
specifier: workspace:*
version: link:../../../../packages/shared-feedback-ui
'@manacore/shared-i18n':
specifier: workspace:*
version: link:../../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../../packages/shared-icons
'@manacore/shared-profile-ui':
specifier: workspace:*
version: link:../../../../packages/shared-profile-ui
'@manacore/shared-subscription-ui':
specifier: workspace:*
version: link:../../../../packages/shared-subscription-ui
'@manacore/shared-tailwind':
specifier: workspace:*
version: link:../../../../packages/shared-tailwind
'@manacore/shared-theme':
specifier: workspace:*
version: link:../../../../packages/shared-theme
'@manacore/shared-theme-ui':
specifier: workspace:*
version: link:../../../../packages/shared-theme-ui
'@manacore/shared-ui':
specifier: workspace:*
version: link:../../../../packages/shared-ui
date-fns:
specifier: ^4.1.0
version: 4.1.0
svelte-i18n:
specifier: ^4.0.1
version: 4.0.1(svelte@5.44.0)
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^3.0.0
version: 3.3.1(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)))
'@sveltejs/kit':
specifier: ^2.0.0
version: 2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@sveltejs/vite-plugin-svelte':
specifier: ^5.0.0
version: 5.1.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@tailwindcss/vite':
specifier: ^4.1.7
version: 4.1.17(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@types/node':
specifier: ^20.0.0
version: 20.19.25
prettier:
specifier: ^3.1.1
version: 3.6.2
prettier-plugin-svelte:
specifier: ^3.1.2
version: 3.4.0(prettier@3.6.2)(svelte@5.44.0)
svelte:
specifier: ^5.0.0
version: 5.44.0
svelte-check:
specifier: ^4.0.0
version: 4.3.4(picomatch@4.0.3)(svelte@5.44.0)(typescript@5.9.3)
tailwindcss:
specifier: ^4.1.7
version: 4.1.17
tslib:
specifier: ^2.4.1
version: 2.8.1
typescript:
specifier: ^5.0.0
version: 5.9.3
vite:
specifier: ^6.0.0
version: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)
apps/calendar/packages/shared:
devDependencies:
typescript:
specifier: ~5.9.2
version: 5.9.3
apps/chat: {}
apps/chat/apps/backend:
@ -465,6 +717,94 @@ importers:
specifier: ^5.7.2
version: 5.9.3
apps/contacts/apps/web:
dependencies:
'@manacore/shared-auth':
specifier: workspace:*
version: link:../../../../packages/shared-auth
'@manacore/shared-auth-ui':
specifier: workspace:*
version: link:../../../../packages/shared-auth-ui
'@manacore/shared-branding':
specifier: workspace:*
version: link:../../../../packages/shared-branding
'@manacore/shared-feedback-service':
specifier: workspace:*
version: link:../../../../packages/shared-feedback-service
'@manacore/shared-feedback-ui':
specifier: workspace:*
version: link:../../../../packages/shared-feedback-ui
'@manacore/shared-i18n':
specifier: workspace:*
version: link:../../../../packages/shared-i18n
'@manacore/shared-icons':
specifier: workspace:*
version: link:../../../../packages/shared-icons
'@manacore/shared-profile-ui':
specifier: workspace:*
version: link:../../../../packages/shared-profile-ui
'@manacore/shared-subscription-ui':
specifier: workspace:*
version: link:../../../../packages/shared-subscription-ui
'@manacore/shared-tailwind':
specifier: workspace:*
version: link:../../../../packages/shared-tailwind
'@manacore/shared-theme':
specifier: workspace:*
version: link:../../../../packages/shared-theme
'@manacore/shared-theme-ui':
specifier: workspace:*
version: link:../../../../packages/shared-theme-ui
'@manacore/shared-ui':
specifier: workspace:*
version: link:../../../../packages/shared-ui
'@manacore/shared-utils':
specifier: workspace:*
version: link:../../../../packages/shared-utils
svelte-i18n:
specifier: ^4.0.1
version: 4.0.1(svelte@5.44.0)
devDependencies:
'@sveltejs/adapter-auto':
specifier: ^3.0.0
version: 3.3.1(@sveltejs/kit@2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)))
'@sveltejs/kit':
specifier: ^2.0.0
version: 2.49.0(@opentelemetry/api@1.9.0)(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)))(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@sveltejs/vite-plugin-svelte':
specifier: ^5.0.0
version: 5.1.1(svelte@5.44.0)(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@tailwindcss/vite':
specifier: ^4.1.7
version: 4.1.17(vite@6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1))
'@types/node':
specifier: ^20.0.0
version: 20.19.25
prettier:
specifier: ^3.1.1
version: 3.6.2
prettier-plugin-svelte:
specifier: ^3.1.2
version: 3.4.0(prettier@3.6.2)(svelte@5.44.0)
svelte:
specifier: ^5.0.0
version: 5.44.0
svelte-check:
specifier: ^4.0.0
version: 4.3.4(picomatch@4.0.3)(svelte@5.44.0)(typescript@5.9.3)
tailwindcss:
specifier: ^4.1.7
version: 4.1.17
tslib:
specifier: ^2.4.1
version: 2.8.1
typescript:
specifier: ^5.0.0
version: 5.9.3
vite:
specifier: ^6.0.0
version: 6.4.1(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(tsx@4.20.6)(yaml@2.8.1)
apps/manacore/apps/landing:
dependencies:
'@astrojs/react':
@ -1767,6 +2107,34 @@ importers:
specifier: ^5.7.2
version: 5.9.3
apps/presi/apps/landing:
dependencies:
'@astrojs/check':
specifier: ^0.9.0
version: 0.9.5(prettier-plugin-astro@0.14.1)(prettier@3.6.2)(typescript@5.9.3)
'@astrojs/sitemap':
specifier: ^3.2.1
version: 3.6.0
'@manacore/shared-landing-ui':
specifier: workspace:*
version: link:../../../../packages/shared-landing-ui
astro:
specifier: ^5.16.0
version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@24.10.1)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
typescript:
specifier: ^5.0.0
version: 5.9.3
devDependencies:
'@astrojs/tailwind':
specifier: ^6.0.0
version: 6.0.2(astro@5.16.0(@netlify/blobs@10.4.1)(@types/node@24.10.1)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1))(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))(ts-node@10.9.2(@types/node@24.10.1)(typescript@5.9.3))
'@tailwindcss/typography':
specifier: ^0.5.16
version: 0.5.19(tailwindcss@3.4.18(tsx@4.20.6)(yaml@2.8.1))
tailwindcss:
specifier: ^3.4.17
version: 3.4.18(tsx@4.20.6)(yaml@2.8.1)
apps/presi/apps/mobile:
dependencies:
'@expo/vector-icons':
@ -2069,6 +2437,9 @@ importers:
apps/zitare/apps/landing:
dependencies:
'@manacore/shared-landing-ui':
specifier: workspace:*
version: link:../../../../packages/shared-landing-ui
astro:
specifier: ^5.3.4
version: 5.16.0(@netlify/blobs@10.4.1)(@types/node@24.10.1)(ioredis@5.8.2)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(terser@5.44.1)(tsx@4.20.6)(typescript@5.9.3)(yaml@2.8.1)
@ -2507,7 +2878,7 @@ importers:
devDependencies:
'@nestjs/cli':
specifier: ^10.4.9
version: 10.4.9(esbuild@0.19.12)
version: 10.4.9(esbuild@0.27.0)
'@nestjs/schematics':
specifier: ^10.2.3
version: 10.2.3(chokidar@3.6.0)(typescript@5.9.3)
@ -2540,7 +2911,7 @@ importers:
version: 0.5.21
ts-loader:
specifier: ^9.5.1
version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.19.12))
version: 9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0))
ts-node:
specifier: ^10.9.2
version: 10.9.2(@types/node@22.19.1)(typescript@5.9.3)
@ -5435,7 +5806,7 @@ packages:
'@expo/bunyan@4.0.1':
resolution: {integrity: sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==}
engines: {node: '>=0.10.0'}
engines: {'0': node >=0.10.0}
'@expo/cli@0.22.26':
resolution: {integrity: sha512-I689wc8Fn/AX7aUGiwrh3HnssiORMJtR2fpksX+JIe8Cj/EDleblYMSwRPd0025wrwOV9UN1KM/RuEt/QjCS3Q==}
@ -6567,6 +6938,12 @@ packages:
'@nestjs/websockets': ^10.0.0
rxjs: ^7.1.0
'@nestjs/schedule@4.1.2':
resolution: {integrity: sha512-hCTQ1lNjIA5EHxeu8VvQu2Ed2DBLS1GSC6uKPYlBiQe6LL9a7zfE9iVSK+zuK8E2odsApteEBmfAQchc8Hx0Gg==}
peerDependencies:
'@nestjs/common': ^8.0.0 || ^9.0.0 || ^10.0.0
'@nestjs/core': ^8.0.0 || ^9.0.0 || ^10.0.0
'@nestjs/schematics@10.2.3':
resolution: {integrity: sha512-4e8gxaCk7DhBxVUly2PjYL4xC2ifDFexCqq1/u4TtivLGXotVk0wHdYuPYe1tHTHuR1lsOkRbfOCpkdTnigLVg==}
peerDependencies:
@ -8374,6 +8751,9 @@ packages:
'@types/jsonwebtoken@9.0.10':
resolution: {integrity: sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==}
'@types/luxon@3.4.2':
resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==}
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
@ -10107,12 +10487,18 @@ packages:
create-require@1.1.1:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
cron@3.2.1:
resolution: {integrity: sha512-w2n5l49GMmmkBFEsH9FIDhjZ1n1QgTMOCMGuQtOXs5veNiosZmso6bQGuqOJSYAXXrG84WQFVneNk+Yt0Ua9iw==}
cross-fetch@3.2.0:
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
cross-fetch@4.0.0:
resolution: {integrity: sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==}
cross-fetch@4.1.0:
resolution: {integrity: sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==}
cross-spawn@6.0.6:
resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
engines: {node: '>=4.8'}
@ -12521,6 +12907,9 @@ packages:
typescript:
optional: true
ical.js@2.2.1:
resolution: {integrity: sha512-yK/UlPbEs316igb/tjRgbFA8ZV75rCsBJp/hWOatpyaPNlgw0dGDmU+FoicOcwX4xXkeXOkYiOmCqNPFpNPkQg==}
iconv-lite@0.4.24:
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
engines: {node: '>=0.10.0'}
@ -13656,6 +14045,10 @@ packages:
peerDependencies:
svelte: ^3 || ^4 || ^5.0.0-next.42
luxon@3.5.0:
resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
engines: {node: '>=12'}
lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@ -16737,6 +17130,10 @@ packages:
resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
engines: {node: '>=6'}
tsdav@2.1.6:
resolution: {integrity: sha512-ngZCuhQvNClm5YHbuKN7EmRhOpu1XmsJ2+d56rpeiW9ZvXIxtDWyOf8TEojEgrgZVca9XJglVFNHYtyjQSmYOA==}
engines: {node: '>=10'}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
@ -17156,6 +17553,10 @@ packages:
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
engines: {node: '>= 0.4.0'}
uuid@11.0.3:
resolution: {integrity: sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==}
hasBin: true
uuid@13.0.0:
resolution: {integrity: sha512-XQegIaBTVUjSHliKqcnFqYypAd4S+WCYt5NIeRs6w/UAry7z8Y9j5ZwRRL4kzq9U3sD6v+85er9FvkEaBpji2w==}
hasBin: true
@ -17778,6 +18179,10 @@ packages:
xdate@0.8.3:
resolution: {integrity: sha512-1NhJWPJwN+VjbkACT9XHbQK4o6exeSVtS2CxhMPwUE7xQakoEFTlwra9YcqV/uHQVyeEUYoYC46VGDJ+etnIiw==}
xml-js@1.6.11:
resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==}
hasBin: true
xml-name-validator@4.0.0:
resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
engines: {node: '>=12'}
@ -20698,7 +21103,7 @@ snapshots:
wrap-ansi: 7.0.0
ws: 8.18.3
optionalDependencies:
expo-router: 6.0.15(jiucxy5ca3jdtbnulaxuc46jdq)
expo-router: 6.0.15(5e7ih2rh6mb55wruwvjljgzihq)
react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
@ -20775,7 +21180,7 @@ snapshots:
wrap-ansi: 7.0.0
ws: 8.18.3
optionalDependencies:
expo-router: 6.0.15(dux2nvtiztnejw7mxzfaajqvh4)
expo-router: 6.0.15(nttrd3tw67nnyhowcwgdzipb5e)
react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)
transitivePeerDependencies:
- '@modelcontextprotocol/sdk'
@ -22085,6 +22490,43 @@ snapshots:
- supports-color
- ts-node
'@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))':
dependencies:
'@jest/console': 30.2.0
'@jest/pattern': 30.0.1
'@jest/reporters': 30.2.0
'@jest/test-result': 30.2.0
'@jest/transform': 30.2.0
'@jest/types': 30.2.0
'@types/node': 22.19.1
ansi-escapes: 4.3.2
chalk: 4.1.2
ci-info: 4.3.1
exit-x: 0.2.2
graceful-fs: 4.2.11
jest-changed-files: 30.2.0
jest-config: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-haste-map: 30.2.0
jest-message-util: 30.2.0
jest-regex-util: 30.0.1
jest-resolve: 30.2.0
jest-resolve-dependencies: 30.2.0
jest-runner: 30.2.0
jest-runtime: 30.2.0
jest-snapshot: 30.2.0
jest-util: 30.2.0
jest-validate: 30.2.0
jest-watcher: 30.2.0
micromatch: 4.0.8
pretty-format: 30.2.0
slash: 3.0.0
transitivePeerDependencies:
- babel-plugin-macros
- esbuild-register
- supports-color
- ts-node
optional: true
'@jest/core@30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))':
dependencies:
'@jest/console': 30.2.0
@ -22730,6 +23172,13 @@ snapshots:
- utf-8-validate
optional: true
'@nestjs/schedule@4.1.2(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/core@10.4.20)':
dependencies:
'@nestjs/common': 10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@nestjs/core': 10.4.20(@nestjs/common@10.4.20(class-transformer@0.5.1)(class-validator@0.14.3)(reflect-metadata@0.2.2)(rxjs@7.8.2))(@nestjs/platform-express@10.4.20)(@nestjs/websockets@10.4.20)(reflect-metadata@0.2.2)(rxjs@7.8.2)
cron: 3.2.1
uuid: 11.0.3
'@nestjs/schematics@10.2.3(chokidar@3.6.0)(typescript@5.7.2)':
dependencies:
'@angular-devkit/core': 17.3.11(chokidar@3.6.0)
@ -25408,17 +25857,17 @@ snapshots:
react-test-renderer: 19.1.0(react@19.1.0)
redent: 3.0.0
'@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
'@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
dependencies:
jest-matcher-utils: 30.2.0
picocolors: 1.1.1
pretty-format: 30.2.0
react: 19.1.0
react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)
react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)
react-test-renderer: 19.1.0(react@19.1.0)
redent: 3.0.0
optionalDependencies:
jest: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0))
jest: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
optional: true
'@testing-library/react-native@13.3.3(jest@30.2.0(@types/node@24.10.1)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)':
@ -25638,6 +26087,8 @@ snapshots:
'@types/ms': 2.1.0
'@types/node': 22.19.1
'@types/luxon@3.4.2': {}
'@types/mdast@4.0.4':
dependencies:
'@types/unist': 2.0.11
@ -28220,6 +28671,11 @@ snapshots:
create-require@1.1.1: {}
cron@3.2.1:
dependencies:
'@types/luxon': 3.4.2
luxon: 3.5.0
cross-fetch@3.2.0:
dependencies:
node-fetch: 2.7.0
@ -28232,6 +28688,12 @@ snapshots:
transitivePeerDependencies:
- encoding
cross-fetch@4.1.0:
dependencies:
node-fetch: 2.7.0
transitivePeerDependencies:
- encoding
cross-spawn@6.0.6:
dependencies:
nice-try: 1.0.5
@ -29104,9 +29566,9 @@ snapshots:
'@typescript-eslint/eslint-plugin': 8.48.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
'@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-expo: 1.0.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react: 7.37.5(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-react-hooks: 5.2.0(eslint@9.39.1(jiti@2.6.1))
globals: 16.5.0
@ -29208,7 +29670,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1)):
eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3
@ -29219,7 +29681,7 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))
eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@ -29254,14 +29716,14 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)):
eslint-module-utils@2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.1(jiti@2.6.1))
eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
transitivePeerDependencies:
- supports-color
@ -29390,7 +29852,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)):
eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1)):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@ -29401,7 +29863,7 @@ snapshots:
doctrine: 2.1.0
eslint: 9.39.1(jiti@2.6.1)
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.1(jiti@2.6.1))
eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.48.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1)))(eslint@9.39.1(jiti@2.6.1))
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@ -30544,21 +31006,21 @@ snapshots:
- '@types/react-dom'
- supports-color
expo-router@6.0.15(jiucxy5ca3jdtbnulaxuc46jdq):
expo-router@6.0.15(nttrd3tw67nnyhowcwgdzipb5e):
dependencies:
'@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@expo/metro-runtime': 6.1.2(expo@54.0.25)(react-dom@19.1.0(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@expo/schema-utils': 0.1.7
'@radix-ui/react-slot': 1.2.0(@types/react@19.2.7)(react@19.1.0)
'@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
'@react-navigation/bottom-tabs': 7.8.6(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@react-navigation/native': 7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@react-navigation/native-stack': 7.8.0(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@react-navigation/bottom-tabs': 7.8.6(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@react-navigation/native': 7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@react-navigation/native-stack': 7.8.0(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
client-only: 0.0.1
debug: 4.4.3
escape-string-regexp: 4.0.0
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native-webview@13.12.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
expo-constants: 18.0.10(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))
expo-linking: 8.0.9(expo@54.0.25)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
expo: 54.0.25(@babel/core@7.28.5)(@expo/metro-runtime@6.1.2)(expo-router@6.0.15)(react-native-webview@13.12.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
expo-constants: 18.0.10(expo@54.0.25)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))
expo-linking: 8.0.9(expo@54.0.25)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
expo-server: 1.0.4
fast-deep-equal: 3.1.3
invariant: 2.2.4
@ -30566,10 +31028,10 @@ snapshots:
query-string: 7.1.3
react: 19.1.0
react-fast-compare: 3.2.2
react-native: 0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)
react-native-is-edge-to-edge: 1.2.1(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-safe-area-context: 5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-screens: 4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native: 0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0)
react-native-is-edge-to-edge: 1.2.1(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-safe-area-context: 5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-screens: 4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
semver: 7.6.3
server-only: 0.0.1
sf-symbols-typescript: 2.1.0
@ -30577,13 +31039,13 @@ snapshots:
use-latest-callback: 0.2.6(react@19.1.0)
vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
optionalDependencies:
'@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.21(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
'@react-navigation/drawer': 7.7.4(@react-navigation/native@7.1.21(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-gesture-handler@2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-reanimated@4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-safe-area-context@5.6.2(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native-screens@4.16.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
'@testing-library/react-native': 13.3.3(jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react-test-renderer@19.1.0(react@19.1.0))(react@19.1.0)
react-dom: 19.1.0(react@19.1.0)
react-native-gesture-handler: 2.28.0(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.4(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-gesture-handler: 2.28.0(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-reanimated: 4.1.5(@babel/core@7.28.5)(react-native-worklets@0.6.1(@babel/core@7.28.5)(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0))(react-native@0.81.5(@babel/core@7.28.5)(@types/react@19.2.7)(react@19.1.0))(react@19.1.0)
react-native-web: 0.21.2(react-dom@19.1.0(react@19.1.0))(react@19.1.0)
react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.100.2(esbuild@0.27.0))
react-server-dom-webpack: 19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.97.1(esbuild@0.19.12))
transitivePeerDependencies:
- '@react-native-masked-view/masked-view'
- '@types/react'
@ -32120,6 +32582,8 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
ical.js@2.2.1: {}
iconv-lite@0.4.24:
dependencies:
safer-buffer: 2.1.2
@ -32631,15 +33095,15 @@ snapshots:
- supports-color
- ts-node
jest-cli@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)):
jest-cli@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
'@jest/test-result': 30.2.0
'@jest/types': 30.2.0
chalk: 4.1.2
exit-x: 0.2.2
import-local: 3.2.0
jest-config: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0))
jest-config: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
jest-util: 30.2.0
jest-validate: 30.2.0
yargs: 17.7.2
@ -32802,7 +33266,7 @@ snapshots:
- babel-plugin-macros
- supports-color
jest-config@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)):
jest-config@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@babel/core': 7.28.5
'@jest/get-type': 30.1.0
@ -32829,8 +33293,9 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
'@types/node': 20.19.25
esbuild-register: 3.6.0(esbuild@0.27.0)
'@types/node': 22.19.1
esbuild-register: 3.6.0(esbuild@0.19.12)
ts-node: 10.9.2(@types/node@22.19.1)(typescript@5.9.3)
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
@ -33491,12 +33956,12 @@ snapshots:
- supports-color
- ts-node
jest@30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0)):
jest@30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3)):
dependencies:
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.27.0))
'@jest/core': 30.2.0(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
'@jest/types': 30.2.0
import-local: 3.2.0
jest-cli: 30.2.0(@types/node@20.19.25)(esbuild-register@3.6.0(esbuild@0.27.0))
jest-cli: 30.2.0(@types/node@22.19.1)(esbuild-register@3.6.0(esbuild@0.19.12))(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.9.3))
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@ -34028,6 +34493,8 @@ snapshots:
dependencies:
svelte: 5.44.0
luxon@3.5.0: {}
lz-string@1.5.0:
optional: true
@ -37143,6 +37610,16 @@ snapshots:
webpack: 5.100.2(esbuild@0.27.0)
webpack-sources: 3.3.3
react-server-dom-webpack@19.0.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(webpack@5.97.1(esbuild@0.19.12)):
dependencies:
acorn-loose: 8.5.2
neo-async: 2.6.2
react: 19.1.0
react-dom: 19.1.0(react@19.1.0)
webpack: 5.97.1(esbuild@0.19.12)
webpack-sources: 3.3.3
optional: true
react-style-singleton@2.2.3(@types/react@18.3.27)(react@18.3.1):
dependencies:
get-nonce: 1.0.1
@ -38371,17 +38848,6 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.100.2(esbuild@0.19.12)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
terser: 5.44.1
webpack: 5.100.2(esbuild@0.19.12)
optionalDependencies:
esbuild: 0.19.12
terser-webpack-plugin@5.3.14(esbuild@0.19.12)(webpack@5.97.1(esbuild@0.19.12)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
@ -38622,16 +39088,6 @@ snapshots:
babel-jest: 30.2.0(@babel/core@7.28.5)
jest-util: 30.2.0
ts-loader@9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.19.12)):
dependencies:
chalk: 4.1.2
enhanced-resolve: 5.18.3
micromatch: 4.0.8
semver: 7.7.3
source-map: 0.7.6
typescript: 5.9.3
webpack: 5.100.2(esbuild@0.19.12)
ts-loader@9.5.4(typescript@5.9.3)(webpack@5.100.2(esbuild@0.27.0)):
dependencies:
chalk: 4.1.2
@ -38652,6 +39108,16 @@ snapshots:
typescript: 5.9.3
webpack: 5.100.2
ts-loader@9.5.4(typescript@5.9.3)(webpack@5.97.1(esbuild@0.19.12)):
dependencies:
chalk: 4.1.2
enhanced-resolve: 5.18.3
micromatch: 4.0.8
semver: 7.7.3
source-map: 0.7.6
typescript: 5.9.3
webpack: 5.97.1(esbuild@0.19.12)
ts-node@10.9.2(@types/node@20.19.25)(typescript@5.9.3):
dependencies:
'@cspotcode/source-map-support': 0.8.1
@ -38734,6 +39200,16 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
tsdav@2.1.6:
dependencies:
base-64: 1.0.0
cross-fetch: 4.1.0
debug: 4.4.3
xml-js: 1.6.11
transitivePeerDependencies:
- encoding
- supports-color
tslib@2.8.1: {}
tsm@2.3.0:
@ -39140,6 +39616,8 @@ snapshots:
utils-merge@1.0.1: {}
uuid@11.0.3: {}
uuid@13.0.0:
optional: true
@ -39608,38 +40086,6 @@ snapshots:
- esbuild
- uglify-js
webpack@5.100.2(esbuild@0.19.12):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.8
'@types/json-schema': 7.0.15
'@webassemblyjs/ast': 1.14.1
'@webassemblyjs/wasm-edit': 1.14.1
'@webassemblyjs/wasm-parser': 1.14.1
acorn: 8.15.0
acorn-import-phases: 1.0.4(acorn@8.15.0)
browserslist: 4.28.0
chrome-trace-event: 1.0.4
enhanced-resolve: 5.18.3
es-module-lexer: 1.7.0
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
graceful-fs: 4.2.11
json-parse-even-better-errors: 2.3.1
loader-runner: 4.3.1
mime-types: 2.1.35
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.0
terser-webpack-plugin: 5.3.14(esbuild@0.19.12)(webpack@5.100.2(esbuild@0.19.12))
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies:
- '@swc/core'
- esbuild
- uglify-js
webpack@5.100.2(esbuild@0.27.0):
dependencies:
'@types/eslint-scope': 3.7.7
@ -39982,6 +40428,10 @@ snapshots:
xdate@0.8.3: {}
xml-js@1.6.11:
dependencies:
sax: 1.4.3
xml-name-validator@4.0.0: {}
xml-name-validator@5.0.0: