mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-20 08:13:39 +02:00
Citycorners-Reste vom vorherigen Sprint mit committet. food → Nutriphi,
wardrobe → Werdrobe sind als Standalone-Apps live; die mana.how-unified-
App trägt die Modul-Surfaces nicht mehr.
Gelöscht / abgebaut:
- Module: apps/mana/.../modules/{food,wardrobe} + Routen + Locales
- Landing-Apps: apps/{food,citycorners}/ Top-Level
- Backend: apps/api/src/modules/{food,wardrobe} + MCP-Tools log_meal /
nutrition_summary, picture-routes verifyMediaOwnership-Allowlist
- shared-branding: APP_BRANDING, APP_ICONS, MANA_APPS, Logos, Onboarding
- shared-ai, mana-tool-registry, credits, shared-types/spaces,
shared-utils/analytics, spiral-db/MANA_APP_INDEX, website-blocks
- Cross-Module: Body-CalorieWeightChart, Comic-CharacterPicker-Wardrobe,
website-Embed wardrobe.outfits, DaySnapshot.nutrition, FoodEventType,
MealLogged/Meal*-Streaks/Goals/Companion/Trigger, AI-Agent-Policy,
GoalEditor MealLogged, MyDay/RitualRunner/Rules nutrition-Refs,
Crypto-Registry meals/wardrobeGarments/wardrobeOutfits
- Generic: PlaceCategory 'food' (places + geocoding + Locales),
spaces.ts 'food'/'wardrobe' Modul-IDs
- Infrastruktur: cloudflared, docker-compose CORS, nginx-Landing,
prometheus-Probe, load-tests, package.json dev-Scripts,
generate-env, mac-mini/build-landings, dependabot
Dexie v62 Migration:
- droppt meals, goals, foodFavorites, mealTags, wardrobeGarments,
wardrobeOutfits Tabellen
- entfernt wardrobeOutfitId / wardrobeGarmentId aus images-Index
- Upgrade-Callback strippt die toten FK-Properties aus alten image-Rows
Test/Doku:
- module-registry.test.ts: Snapshot refresht auf aktuellen Stand mit
56 Modulen (vorher 32, statisch eingefroren pre-refactor). Plus
LEGACY_TABLES-Exclusion für nicht-mehr-registrierte Tabellen aus
cards/citycorners/moodlit/rituals/wishes/who.
- streaks.test.ts: MealLogged-Test in TaskCompleted-Test umgebaut
- apps/mana/CLAUDE.md: food-Refs in AI-Tool-Tabelle und
AiProposalInbox-Liste entfernt
- validate-i18n-keys.mjs + validate-no-recursive-turbo.mjs:
existsSync-Guard, damit die Skripte mit gestaged-aber-rm'ten Dateien
klarkommen
mana-web svelte-check 0 errors / 7436 files, betroffene Tests grün
(streaks, dashboard, module-registry), validate:pg-schema,
validate:turbo, validate:i18n-parity grün.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| src | ||
| package.json | ||
| README.md | ||
| tsconfig.json | ||
@mana/shared-branding
Shared branding components and configuration for the Mana ecosystem.
Features
- AppLogo: SVG logo component for any Mana app
- AppLogoWithName: Logo with app name combination
- ManaIcon: Universal Mana drop icon for credits display
- Branding Config: Centralized colors, names, and taglines
Installation
pnpm add @mana/shared-branding
Usage
AppLogo
Display an app's logo:
<script lang="ts">
import { AppLogo } from '@mana/shared-branding';
</script>
<AppLogo app="memoro" size={32} />
<AppLogo app="mana" size={32} />
<AppLogo app="cards" size={32} />
<AppLogo app="maerchenzauber" size={32} />
AppLogoWithName
Display logo with app name (perfect for headers):
<script lang="ts">
import { AppLogoWithName } from '@mana/shared-branding';
</script>
<AppLogoWithName app="memoro" size={28} />
<AppLogoWithName app="mana" showName={false} />
ManaIcon
Universal Mana drop icon:
<script lang="ts">
import { ManaIcon } from '@mana/shared-branding';
</script>
<ManaIcon size={24} color="#4287f5" />
Branding Configuration
Access branding config programmatically:
import { getAppBranding, APP_BRANDING } from '@mana/shared-branding';
const memoro = getAppBranding('memoro');
console.log(memoro.name); // "Memoro"
console.log(memoro.tagline); // "AI Voice Memos"
console.log(memoro.primaryColor); // "#f8d62b"
App Branding
| App | Name | Primary Color | Tagline |
|---|---|---|---|
memoro |
Memoro | #f8d62b (Gold) | AI Voice Memos |
mana |
Mana | #6366f1 (Indigo) | Central Hub |
cards |
Cards | #8b5cf6 (Purple) | AI Flashcards |
maerchenzauber |
Märchenzauber | #ec4899 (Pink) | AI Story Creator |
Props
AppLogo
| Prop | Type | Default | Description |
|---|---|---|---|
app |
AppId |
required | App identifier |
size |
number |
32 |
Size in pixels |
color |
string |
App primary color | Override color |
class |
string |
'' |
Additional CSS classes |
AppLogoWithName
| Prop | Type | Default | Description |
|---|---|---|---|
app |
AppId |
required | App identifier |
size |
number |
28 |
Logo size in pixels |
color |
string |
App primary color | Override color |
showName |
boolean |
true |
Show app name |
nameFontSize |
string |
'1.25rem' |
Name font size |
gap |
string |
'0.5rem' |
Gap between logo and name |
class |
string |
'' |
Additional CSS classes |
ManaIcon
| Prop | Type | Default | Description |
|---|---|---|---|
size |
number |
24 |
Size in pixels |
color |
string |
'#4287f5' |
Icon color |
class |
string |
'' |
Additional CSS classes |
Types
type AppId = 'memoro' | 'mana' | 'cards' | 'maerchenzauber';
interface AppBranding {
id: AppId;
name: string;
tagline: string;
primaryColor: string;
secondaryColor?: string;
logoPath: string;
logoViewBox?: string;
logoStroke?: boolean;
logoStrokeWidth?: number;
}