mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-23 17:06:41 +02:00
feat(nutriphi): migrate to shared auth UI components
- Add nutriphi branding to shared-branding package (types, config, logo) - Add nutriphi icon to app-icons and MANA_APPS for AppSlider - Replace custom login/register pages with shared LoginPage/RegisterPage - Add forgot-password page using shared ForgotPasswordPage component - Create AppSlider component for nutriphi web - Update vite.config.ts with SSR config for shared packages - Add nutriphi env variables to generate-env.mjs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
f1e27f3beb
commit
8b61399a64
13 changed files with 295 additions and 263 deletions
|
|
@ -44,6 +44,9 @@ const wisekeepSvg = `<svg width="1024" height="1024" viewBox="0 0 1024 1024" fil
|
|||
// Moodlit icon (colorful gradient circle)
|
||||
const moodlitSvg = `<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0)"><rect x="103" y="103" width="819" height="819" rx="409.5" fill="white"/><g filter="url(#filter0)"><circle cx="611" cy="250" r="314" fill="#D10000"/></g><g filter="url(#filter1)"><circle cx="231" cy="393" r="314" fill="#D17A00"/></g><g filter="url(#filter2)"><circle cx="735" cy="625" r="314" fill="#FFEA00"/></g><g filter="url(#filter3)"><circle cx="409" cy="844" r="314" fill="#0033FF"/></g></g><rect x="107" y="107" width="811" height="811" rx="405.5" stroke="white" stroke-opacity="0.2" stroke-width="8"/><defs><filter id="filter0" x="-2" y="-363" width="1226" height="1226" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="149" result="effect1"/></filter><filter id="filter1" x="-382" y="-220" width="1226" height="1226" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="149" result="effect1"/></filter><filter id="filter2" x="122" y="12" width="1226" height="1226" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="149" result="effect1"/></filter><filter id="filter3" x="-204" y="231" width="1226" height="1226" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB"><feFlood flood-opacity="0" result="BackgroundImageFix"/><feBlend in="SourceGraphic" in2="BackgroundImageFix" result="shape"/><feGaussianBlur stdDeviation="149" result="effect1"/></filter><clipPath id="clip0"><rect x="103" y="103" width="819" height="819" rx="409.5" fill="white"/></clipPath></defs></svg>`;
|
||||
|
||||
// Nutriphi icon (nutrition/heart with gradient)
|
||||
const nutriphiSvg = `<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="130" y="130" width="764" height="764" rx="382" fill="url(#nutriGrad)"/><path d="M512 760C512 760 280 600 280 420C280 340 344 280 424 280C472 280 512 308 512 308C512 308 552 280 600 280C680 280 744 340 744 420C744 600 512 760 512 760Z" fill="white"/><path d="M512 280V200" stroke="white" stroke-width="24" stroke-linecap="round"/><path d="M512 200C512 200 560 160 600 180" stroke="white" stroke-width="24" stroke-linecap="round"/><defs><linearGradient id="nutriGrad" x1="130" y1="130" x2="894" y2="894" gradientUnits="userSpaceOnUse"><stop stop-color="#10b981"/><stop offset="1" stop-color="#059669"/></linearGradient></defs></svg>`;
|
||||
|
||||
/**
|
||||
* App icons as data URLs
|
||||
* Use these directly in <img src={APP_ICONS.memoro}> or CSS background-image
|
||||
|
|
@ -60,6 +63,7 @@ export const APP_ICONS = {
|
|||
zitare: svgToDataUrl(zitareSvg),
|
||||
wisekeep: svgToDataUrl(wisekeepSvg),
|
||||
moodlit: svgToDataUrl(moodlitSvg),
|
||||
nutriphi: svgToDataUrl(nutriphiSvg),
|
||||
} as const;
|
||||
|
||||
export type AppIconId = keyof typeof APP_ICONS;
|
||||
|
|
|
|||
|
|
@ -92,6 +92,19 @@ export const APP_BRANDING: Record<AppId, AppBranding> = {
|
|||
logoStroke: true,
|
||||
logoStrokeWidth: 1.5,
|
||||
},
|
||||
nutriphi: {
|
||||
id: 'nutriphi',
|
||||
name: 'Nutriphi',
|
||||
tagline: 'AI Nutrition Tracker',
|
||||
primaryColor: '#10b981',
|
||||
secondaryColor: '#34d399',
|
||||
// Heart with sparkle for healthy nutrition
|
||||
logoPath:
|
||||
'M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z',
|
||||
logoViewBox: '0 0 24 24',
|
||||
logoStroke: true,
|
||||
logoStrokeWidth: 1.5,
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
13
packages/shared-branding/src/logos/NutriPhiLogo.svelte
Normal file
13
packages/shared-branding/src/logos/NutriPhiLogo.svelte
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<script lang="ts">
|
||||
import AppLogo from '../AppLogo.svelte';
|
||||
|
||||
interface Props {
|
||||
size?: number;
|
||||
color?: string;
|
||||
class?: string;
|
||||
}
|
||||
|
||||
let { size = 55, color, class: className = '' }: Props = $props();
|
||||
</script>
|
||||
|
||||
<AppLogo app="nutriphi" {size} {color} class={className} />
|
||||
|
|
@ -9,3 +9,4 @@ export { default as StorytellerLogo } from './StorytellerLogo.svelte';
|
|||
export { default as UloadLogo } from './UloadLogo.svelte';
|
||||
export { default as ChatLogo } from './ChatLogo.svelte';
|
||||
export { default as PresiLogo } from './PresiLogo.svelte';
|
||||
export { default as NutriPhiLogo } from './NutriPhiLogo.svelte';
|
||||
|
|
|
|||
|
|
@ -158,6 +158,22 @@ export const MANA_APPS: ManaApp[] = [
|
|||
comingSoon: true,
|
||||
status: 'planning',
|
||||
},
|
||||
{
|
||||
id: 'nutriphi',
|
||||
name: 'Nutriphi',
|
||||
description: {
|
||||
de: 'KI Ernährungstracker',
|
||||
en: 'AI Nutrition Tracker',
|
||||
},
|
||||
longDescription: {
|
||||
de: 'Tracke deine Ernährung mit KI-gestützter Foto-Analyse und erhalte detaillierte Nährwertinformationen.',
|
||||
en: 'Track your nutrition with AI-powered photo analysis and get detailed nutritional information.',
|
||||
},
|
||||
icon: APP_ICONS.nutriphi,
|
||||
color: '#10b981',
|
||||
comingSoon: false,
|
||||
status: 'development',
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
/**
|
||||
* App identifiers for branding
|
||||
*/
|
||||
export type AppId = 'memoro' | 'manacore' | 'manadeck' | 'maerchenzauber' | 'uload' | 'chat' | 'presi';
|
||||
export type AppId = 'memoro' | 'manacore' | 'manadeck' | 'maerchenzauber' | 'uload' | 'chat' | 'presi' | 'nutriphi';
|
||||
|
||||
/**
|
||||
* App branding configuration
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue