feat(zitare): add vertical scroll-snap quote feed with infinite scroll

- Replace single quote view with TikTok-style vertical scrolling feed
- Add infinite scroll to load more quotes as user scrolls
- Remove discover page (consolidated into homepage)
- Fix theme store to use appId instead of storagePrefix
- Fix Sidebar theme toggle to use toggleMode() and isDark
- Add zitare and picture branding to shared-branding config
- Add missing manacore, mana, moodlit URLs to APP_URLS

🤖 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-01 14:57:05 +01:00
parent 4e4db4612c
commit 6cfab65b96
8 changed files with 165 additions and 40 deletions

View file

@ -105,6 +105,32 @@ export const APP_BRANDING: Record<AppId, AppBranding> = {
logoStroke: true,
logoStrokeWidth: 1.5,
},
zitare: {
id: 'zitare',
name: 'Zitare',
tagline: 'Daily Inspiration',
primaryColor: '#f59e0b',
secondaryColor: '#fbbf24',
// Quote/chat bubble icon
logoPath:
'M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 01.865-.501 48.172 48.172 0 003.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z',
logoViewBox: '0 0 24 24',
logoStroke: true,
logoStrokeWidth: 1.5,
},
picture: {
id: 'picture',
name: 'Picture',
tagline: 'AI Image Generation',
primaryColor: '#3b82f6',
secondaryColor: '#60a5fa',
// Image/picture icon
logoPath:
'M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z',
logoViewBox: '0 0 24 24',
logoStroke: true,
logoStrokeWidth: 1.5,
},
};
/**

View file

@ -257,6 +257,9 @@ export const APP_URLS: Record<AppIconId, { dev: string; prod: string }> = {
zitare: { dev: 'http://localhost:5180', prod: 'https://zitare.manacore.app' },
wisekeep: { dev: 'http://localhost:5181', prod: 'https://wisekeep.manacore.app' },
nutriphi: { dev: 'http://localhost:5182', prod: 'https://nutriphi.manacore.app' },
manacore: { dev: 'http://localhost:5173', prod: 'https://manacore.app' },
mana: { dev: 'http://localhost:5173', prod: 'https://manacore.app' },
moodlit: { dev: 'http://localhost:5183', prod: 'https://moodlit.manacore.app' },
};
/**

View file

@ -1,7 +1,7 @@
/**
* App identifiers for branding
*/
export type AppId = 'memoro' | 'manacore' | 'manadeck' | 'maerchenzauber' | 'uload' | 'chat' | 'presi' | 'nutriphi';
export type AppId = 'memoro' | 'manacore' | 'manadeck' | 'maerchenzauber' | 'uload' | 'chat' | 'presi' | 'nutriphi' | 'zitare' | 'picture';
/**
* App branding configuration