Files
fotospiel-app/resources/js/admin/mobile/theme.ts
2026-01-15 19:54:04 +01:00

80 lines
2.8 KiB
TypeScript

import { useTheme } from '@tamagui/core';
export const ADMIN_COLORS = {
primary: '#FF5A5F',
primaryStrong: '#C2413B',
accent: '#FFF8F5',
accentSoft: '#FFF1EB',
accentWarm: '#FFE4DA',
warning: '#F5C542',
success: '#06D6A0',
danger: '#B91C1C',
text: '#1F2937',
textMuted: '#6B7280',
textSubtle: '#94A3B8',
border: '#F2E4DA',
surface: '#FFFFFF',
surfaceMuted: '#FFFDFB',
backdrop: '#0F172A',
};
export const ADMIN_ACTION_COLORS = {
settings: '#14B8A6',
tasks: '#F59E0B',
qr: '#3B82F6',
images: '#8B5CF6',
liveShow: '#EC4899',
liveShowSettings: '#0EA5E9',
guests: '#10B981',
guestMessages: '#F97316',
branding: '#6366F1',
photobooth: '#E11D48',
recap: '#64748B',
packages: ADMIN_COLORS.primary,
analytics: '#22C55E',
invites: ADMIN_COLORS.primaryStrong,
};
export const ADMIN_GRADIENTS = {
primaryCta: `linear-gradient(135deg, ${ADMIN_COLORS.primary}, #FF8A8E, ${ADMIN_COLORS.accent})`,
softCard: `linear-gradient(135deg, ${ADMIN_COLORS.accentSoft}, ${ADMIN_COLORS.accentWarm})`,
loginBackground: 'linear-gradient(135deg, #0b1020, #0f172a, #0b1020)',
};
export const ADMIN_MOTION = {
tileStaggerMs: 40,
};
export function useAdminTheme() {
const theme = useTheme();
return {
theme,
background: String(theme.background?.val ?? '#FFF8F5'),
surface: String(theme.surface?.val ?? ADMIN_COLORS.surface),
surfaceMuted: String(theme.gray2?.val ?? ADMIN_COLORS.surfaceMuted),
border: String(theme.borderColor?.val ?? ADMIN_COLORS.border),
text: String(theme.color?.val ?? ADMIN_COLORS.text),
textStrong: String(theme.color12?.val ?? theme.color?.val ?? ADMIN_COLORS.text),
muted: String(theme.gray?.val ?? ADMIN_COLORS.textMuted),
subtle: String(theme.gray8?.val ?? ADMIN_COLORS.textSubtle),
primary: String(theme.primary?.val ?? ADMIN_COLORS.primary),
accent: String(theme.blue6?.val ?? theme.accent?.val ?? ADMIN_COLORS.accent),
accentSoft: String(theme.blue3?.val ?? ADMIN_COLORS.accentSoft),
accentStrong: String(theme.blue10?.val ?? ADMIN_COLORS.primaryStrong),
successBg: String(theme.green3?.val ?? '#DCFCE7'),
successText: String(theme.green10?.val ?? '#166534'),
dangerBg: String(theme.red3?.val ?? '#FEE2E2'),
dangerText: String(theme.red11?.val ?? ADMIN_COLORS.danger),
warningBg: String(theme.yellow3?.val ?? '#FFF7ED'),
warningBorder: String(theme.yellow6?.val ?? '#FED7AA'),
warningText: String(theme.yellow11?.val ?? '#92400E'),
infoBg: String(theme.blue3?.val ?? ADMIN_COLORS.accentSoft),
infoText: String(theme.blue10?.val ?? ADMIN_COLORS.primaryStrong),
danger: String(theme.red10?.val ?? ADMIN_COLORS.danger),
backdrop: String(theme.gray12?.val ?? ADMIN_COLORS.backdrop),
overlay: String(theme.gray12?.val ?? 'rgba(15, 23, 42, 0.6)'),
shadow: String(theme.shadowColor?.val ?? 'rgba(31, 41, 55, 0.12)'),
};
}