feat: Linear-style UI redesign with improved mobile experience

Major changes:
- Redesign cabinet with Linear-style components and top navigation
- Replace detail modals with dedicated pages (users, broadcasts, email templates)
- Add email channel support for broadcasts
- Remove pull-to-refresh, improve drag-and-drop on touch devices
- Fix Telegram Mini App: fullscreen, back button, scroll restoration
- Unify admin pages color scheme to design system
- Mobile-first improvements: horizontal tabs for settings, better touch targets
This commit is contained in:
c0mrade
2026-01-31 22:06:36 +03:00
parent 929634aac4
commit b953ee0b8c
108 changed files with 11711 additions and 4542 deletions

View File

@@ -68,3 +68,49 @@ export type ShadeLevel = (typeof SHADE_LEVELS)[number];
export type ExtendedShadeLevel = (typeof EXTENDED_SHADE_LEVELS)[number];
export type ColorPalette = Record<ShadeLevel | 850, string>;
// Extended theme settings for user preferences
export type BorderRadiusPreset = 'none' | 'small' | 'medium' | 'large' | 'pill';
export type SpacingPreset = 'compact' | 'comfortable' | 'spacious';
export type ThemeMode = 'dark' | 'light' | 'system';
export interface UserThemePreferences {
/**
* Theme mode preference
* @default 'system'
*/
theme: ThemeMode;
/**
* Border radius preset
* @default 'large'
*/
borderRadius: BorderRadiusPreset;
/**
* Whether animations are enabled
* @default true
*/
animationsEnabled: boolean;
}
export const DEFAULT_USER_PREFERENCES: UserThemePreferences = {
theme: 'system',
borderRadius: 'large',
animationsEnabled: true,
};
// CSS variable values for each preset
export const BORDER_RADIUS_VALUES: Record<BorderRadiusPreset, string> = {
none: '0px',
small: '8px',
medium: '16px',
large: '24px',
pill: '9999px',
};
export const SPACING_VALUES: Record<SpacingPreset, { padding: string; gap: string }> = {
compact: { padding: '12px', gap: '12px' },
comfortable: { padding: '16px', gap: '16px' },
spacious: { padding: '24px', gap: '24px' },
};