From 2a040102b677ad850c5e2896a46d1619d8e085fc Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:40:30 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(branding):=20add=20Calendar=20?= =?UTF-8?q?and=20Storage=20app=20branding?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add calendar and storage SVG icons to app-icons.ts - Add CalendarLogo.svelte and StorageLogo.svelte components - Add Calendar and Storage to MANA_APPS with descriptions - Add APP_URLS entries for calendar and storage - Update AppId type to include 'calendar' - Fix Picture port from 5179 to 5185 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- packages/shared-branding/src/app-icons.ts | 8 +++++ packages/shared-branding/src/config.ts | 13 +++++++ packages/shared-branding/src/index.ts | 1 + .../src/logos/CalendarLogo.svelte | 13 +++++++ .../src/logos/StorageLogo.svelte | 13 +++++++ packages/shared-branding/src/logos/index.ts | 2 ++ packages/shared-branding/src/mana-apps.ts | 36 ++++++++++++++++++- packages/shared-branding/src/types.ts | 3 +- 8 files changed, 87 insertions(+), 2 deletions(-) create mode 100644 packages/shared-branding/src/logos/CalendarLogo.svelte create mode 100644 packages/shared-branding/src/logos/StorageLogo.svelte diff --git a/packages/shared-branding/src/app-icons.ts b/packages/shared-branding/src/app-icons.ts index b430af9a3..f8f005f96 100644 --- a/packages/shared-branding/src/app-icons.ts +++ b/packages/shared-branding/src/app-icons.ts @@ -48,6 +48,12 @@ const nutriphiSvg = ``; +// Calendar icon (calendar with gradient) +const calendarSvg = ``; + +// Storage icon (cloud storage with gradient) +const storageSvg = ``; + /** * App icons as data URLs * Use these directly in or CSS background-image @@ -66,6 +72,8 @@ export const APP_ICONS = { moodlit: svgToDataUrl(moodlitSvg), nutriphi: svgToDataUrl(nutriphiSvg), contacts: svgToDataUrl(contactsSvg), + calendar: svgToDataUrl(calendarSvg), + storage: svgToDataUrl(storageSvg), } as const; export type AppIconId = keyof typeof APP_ICONS; diff --git a/packages/shared-branding/src/config.ts b/packages/shared-branding/src/config.ts index d73c50996..c2e3dcc5e 100644 --- a/packages/shared-branding/src/config.ts +++ b/packages/shared-branding/src/config.ts @@ -144,6 +144,19 @@ export const APP_BRANDING: Record = { logoStroke: true, logoStrokeWidth: 1.5, }, + calendar: { + id: 'calendar', + name: 'Kalender', + tagline: 'Smart Calendar Management', + primaryColor: '#0ea5e9', + secondaryColor: '#38bdf8', + // Calendar icon + logoPath: + 'M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z', + logoViewBox: '0 0 24 24', + logoStroke: true, + logoStrokeWidth: 1.5, + }, }; /** diff --git a/packages/shared-branding/src/index.ts b/packages/shared-branding/src/index.ts index 5770d658b..9f2f78ed7 100644 --- a/packages/shared-branding/src/index.ts +++ b/packages/shared-branding/src/index.ts @@ -25,6 +25,7 @@ export { NutriPhiLogo, ZitareLogo, ContactsLogo, + CalendarLogo, } from './logos'; // Configuration diff --git a/packages/shared-branding/src/logos/CalendarLogo.svelte b/packages/shared-branding/src/logos/CalendarLogo.svelte new file mode 100644 index 000000000..84f1f5d5e --- /dev/null +++ b/packages/shared-branding/src/logos/CalendarLogo.svelte @@ -0,0 +1,13 @@ + + + diff --git a/packages/shared-branding/src/logos/StorageLogo.svelte b/packages/shared-branding/src/logos/StorageLogo.svelte new file mode 100644 index 000000000..794057897 --- /dev/null +++ b/packages/shared-branding/src/logos/StorageLogo.svelte @@ -0,0 +1,13 @@ + + + diff --git a/packages/shared-branding/src/logos/index.ts b/packages/shared-branding/src/logos/index.ts index 9ae382f2c..70adc9c24 100644 --- a/packages/shared-branding/src/logos/index.ts +++ b/packages/shared-branding/src/logos/index.ts @@ -12,3 +12,5 @@ export { default as PresiLogo } from './PresiLogo.svelte'; export { default as NutriPhiLogo } from './NutriPhiLogo.svelte'; export { default as ZitareLogo } from './ZitareLogo.svelte'; export { default as ContactsLogo } from './ContactsLogo.svelte'; +export { default as CalendarLogo } from './CalendarLogo.svelte'; +export { default as StorageLogo } from './StorageLogo.svelte'; diff --git a/packages/shared-branding/src/mana-apps.ts b/packages/shared-branding/src/mana-apps.ts index b71fd7aa8..9cece60d8 100644 --- a/packages/shared-branding/src/mana-apps.ts +++ b/packages/shared-branding/src/mana-apps.ts @@ -196,6 +196,38 @@ export const MANA_APPS: ManaApp[] = [ comingSoon: false, status: 'development', }, + { + id: 'calendar', + name: 'Kalender', + description: { + de: 'Smarte Kalenderverwaltung', + en: 'Smart Calendar Management', + }, + longDescription: { + de: 'Organisiere deine Zeit intelligent mit persönlichen und geteilten Kalendern, wiederkehrenden Terminen und Erinnerungen.', + en: 'Organize your time intelligently with personal and shared calendars, recurring events, and reminders.', + }, + icon: APP_ICONS.calendar, + color: '#0ea5e9', + comingSoon: false, + status: 'development', + }, + { + id: 'storage', + name: 'Storage', + description: { + de: 'Cloud-Speicherung', + en: 'Cloud Storage', + }, + longDescription: { + de: 'Sichere Cloud-Speicherung für deine Dateien mit Ordnern, Versionierung, Sharing und mehr.', + en: 'Secure cloud storage for your files with folders, versioning, sharing, and more.', + }, + icon: APP_ICONS.storage, + color: '#3b82f6', + comingSoon: false, + status: 'development', + }, ]; /** @@ -269,7 +301,7 @@ export const APP_URLS: Record = { presi: { dev: 'http://localhost:5176', prod: 'https://presi.manacore.app' }, manadeck: { dev: 'http://localhost:5177', prod: 'https://manadeck.manacore.app' }, maerchenzauber: { dev: 'http://localhost:5178', prod: 'https://maerchenzauber.manacore.app' }, - picture: { dev: 'http://localhost:5179', prod: 'https://picture.manacore.app' }, + picture: { dev: 'http://localhost:5185', prod: 'https://picture.manacore.app' }, 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' }, @@ -277,6 +309,8 @@ export const APP_URLS: Record = { mana: { dev: 'http://localhost:5173', prod: 'https://manacore.app' }, moodlit: { dev: 'http://localhost:5183', prod: 'https://moodlit.manacore.app' }, contacts: { dev: 'http://localhost:5184', prod: 'https://contacts.manacore.app' }, + calendar: { dev: 'http://localhost:5179', prod: 'https://calendar.manacore.app' }, + storage: { dev: 'http://localhost:5185', prod: 'https://storage.manacore.app' }, }; /** diff --git a/packages/shared-branding/src/types.ts b/packages/shared-branding/src/types.ts index e33ed10e0..98d6309a3 100644 --- a/packages/shared-branding/src/types.ts +++ b/packages/shared-branding/src/types.ts @@ -12,7 +12,8 @@ export type AppId = | 'nutriphi' | 'zitare' | 'picture' - | 'contacts'; + | 'contacts' + | 'calendar'; /** * App branding configuration