managarten/memoro/apps/mobile/features/menus/HeaderContext.tsx
Till-JS e7f5f942f3 chore: initial commit - consolidate 4 projects into monorepo
Projects included:
- maerchenzauber (NestJS backend + Expo mobile + SvelteKit web + Astro landing)
- manacore (Expo mobile + SvelteKit web + Astro landing)
- manadeck (NestJS backend + Expo mobile + SvelteKit web)
- memoro (Expo mobile + SvelteKit web + Astro landing)

This commit preserves the current state before monorepo restructuring.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-22 23:38:24 +01:00

78 lines
1.8 KiB
TypeScript

import React, { createContext, useContext, useState, ReactNode } from 'react';
// Interface für die Header-Konfiguration
export interface HeaderIcon {
name: string;
onPress?: () => void;
href?: string;
customElement?: React.ReactNode;
}
export interface TagItem {
id: string;
name: string;
color: string;
}
export interface HeaderConfig {
title?: string;
showBackButton?: boolean;
rightIcons?: HeaderIcon[];
showMenu?: boolean;
selectedTags?: TagItem[];
onTagRemove?: (tagId: string) => void;
isHomePage?: boolean;
scrollableTitle?: boolean;
showTitle?: boolean;
isMemoDetailPage?: boolean;
backgroundColor?: string;
}
// Context für die Header-Konfiguration
interface HeaderContextType {
config: HeaderConfig;
updateConfig: (newConfig: Partial<HeaderConfig>) => void;
resetConfig: () => void;
}
const defaultConfig: HeaderConfig = {
title: 'Memoro',
showBackButton: false,
rightIcons: [],
showMenu: true,
selectedTags: [],
isHomePage: false,
showTitle: true,
isMemoDetailPage: false,
};
const HeaderContext = createContext<HeaderContextType>({
config: defaultConfig,
updateConfig: () => {},
resetConfig: () => {},
});
// Hook für den Zugriff auf den Header-Context
export const useHeader = () => useContext(HeaderContext);
// Provider-Komponente für den Header-Context
export const HeaderProvider: React.FC<{ children: ReactNode }> = ({ children }) => {
const [config, setConfig] = useState<HeaderConfig>(defaultConfig);
const updateConfig = (newConfig: Partial<HeaderConfig>) => {
setConfig(prevConfig => ({
...prevConfig,
...newConfig,
}));
};
const resetConfig = () => {
setConfig(defaultConfig);
};
return (
<HeaderContext.Provider value={{ config, updateConfig, resetConfig }}>
{children}
</HeaderContext.Provider>
);
};