managarten/manadeck/apps/web/src/lib/components/AppSlider.svelte
Till-JS 22cb7d2c5f feat: unify UI components, AppSlider, and login screens across apps
SUMMARY:
Consolidate shared UI components into @manacore/shared-ui and add
AppSlider to all login screens for a consistent Mana ecosystem experience.

CHANGES:

1. UI Components Migration:
   - Added Card.svelte to @manacore/shared-ui with variants (elevated, outlined, ghost)
   - Migrated Manacore (7 files) and Manadeck (7 files) to use shared-ui
   - Removed local ui/ directories from both apps (8 components total)

2. AppSlider Unification:
   - Created shared AppSlider in @manacore/shared-ui with configurable props
   - Props: apps[], title, isDark, statusLabels, comingSoonLabel, openAppLabel, onAppClick
   - Supports both i18n and static text configurations
   - Updated Memoro AppSlider to use shared component with svelte-i18n
   - Updated Manacore AppSlider to use shared component
   - Created new AppSlider for ManaDeck and Märchenzauber

3. Login Page Enhancements:
   - Extended LoginPage in @manacore/shared-auth-ui with new snippets:
     - appSlider: Renders AppSlider at bottom (initial mode only)
     - headerControls: Renders controls (theme toggle, etc.) top-right
   - Updated all app login pages to include AppSlider:
     - ManaCore: indigo theme (#6366f1)
     - ManaDeck: violet theme (#8b5cf6)
     - Märchenzauber: pink theme (#FF6B9D)

4. Subscription Page Consolidation:
   - Created SubscriptionPage component in @manacore/shared-subscription-ui
   - Moved subscription data (plans, packages, costs) to shared package
   - Reduced subscription page code from ~100 to ~18 lines per app

FILES CHANGED:
- packages/shared-ui: Added Card, AppSlider, updated exports
- packages/shared-auth-ui: Extended LoginPage with snippets
- packages/shared-subscription-ui: Added SubscriptionPage, data files
- manacore/web: Migrated 7 files to shared-ui, updated login
- manadeck/web: Migrated 7 files to shared-ui, added AppSlider, updated login
- maerchenzauber/web: Added AppSlider, updated login
- memoro/web: Updated AppSlider to use shared component

DELETED (moved to shared packages):
- manacore/web/src/lib/components/ui/* (3 files)
- manadeck/web/src/lib/components/ui/* (5 files)
- memoro/web/src/lib/data/*.json (3 files)
- Various pnpm-lock.yaml and pnpm-workspace.yaml files

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:53:44 +01:00

53 lines
1.5 KiB
Svelte

<script lang="ts">
import { AppSlider, type AppItem } from '@manacore/shared-ui';
const apps: AppItem[] = [
{
name: 'Memoro',
description: 'AI Voice Memos',
longDescription: 'Transform your voice recordings into organized, searchable notes with AI-powered transcription and insights.',
icon: '/images/app-icons/memoro-logo-gradient.png',
color: '#f8d62b',
comingSoon: false,
status: 'published'
},
{
name: 'ManaDeck',
description: 'AI Flashcards',
longDescription: 'Create and study smart flashcards with AI-powered spaced repetition for efficient learning.',
icon: '/images/app-icons/manadeck-logo-gradient.png',
color: '#8b5cf6',
comingSoon: false,
status: 'development'
},
{
name: 'Märchenzauber',
description: 'AI Story Creator',
longDescription: 'Create magical personalized stories for children with AI-generated illustrations and consistent characters.',
icon: '/images/app-icons/maerchenzauber-logo-gradient.png',
color: '#FF6B9D',
comingSoon: true,
status: 'beta'
},
{
name: 'Manacore',
description: 'Central Hub',
longDescription: 'Your central hub for managing all Mana applications, subscriptions, and account settings.',
icon: '/images/app-icons/manacore-logo-gradient.png',
color: '#6366f1',
comingSoon: true,
status: 'development'
}
];
function handleAppClick(app: AppItem, index: number) {
console.log('Opening app:', app.name);
}
</script>
<AppSlider
{apps}
title="Part of the Mana Ecosystem"
isDark={false}
onAppClick={handleAppClick}
/>