Skip to content

Тема и цвета

Источник правды

src/core/theme/colors.ts — единственный файл, определяющий все цвета приложения.

Архитектура

src/core/theme/
├── colors.ts       # Определение всех цветов (light + dark)
├── provider.tsx     # ThemeProvider (React context)
└── store.ts         # Zustand store (persisted, AsyncStorage)

Цвета бренда

Primary

ТокенHexRGBИспользование
primary#0077F00 119 240CTA, основные действия
primaryHover#0060C20 96 194Нажатие на primary

Семантические

ТокенHexИспользование
success#6AB53AЗавершено, AI включен
warning#D86D3FОжидание, AI выключен
error#E53E3EОшибки, деструктивные

Мессенджеры

МессенджерHexИспользование
Telegram#0088CCBadge, индикаторы
Instagram#E4405FBadge, индикаторы
WhatsApp#25D366Badge, индикаторы

Light / Dark режимы

Цвета определены для обоих режимов в colors.ts. Значения конвертируются в RGB (space-separated) для CSS-переменных NativeWind.

Переключение

Через Zustand store с AsyncStorage persistence:

typescript
const { colorScheme, toggleColorScheme } = useTheme();

NativeWind использование

tsx
<View className="bg-background dark:bg-background">
  <Text className="text-foreground dark:text-foreground">
    Текст
  </Text>
</View>

Градиенты

Определены в colors.ts, используются через expo-linear-gradient:

НазваниеЦветаИспользование
blueBlue → DarkBlueОсновные CTA кнопки
blueHorizontalBlue → DarkBlue (горизонтально)Акценты
authDiagonalФон экранов авторизации
greenGreen → DarkGreenУспешные действия
heroHero-секции

Тени

typescript
shadows: {
  card:     { elevation: 2, opacity: 0.06 },
  elevated: { elevation: 4, opacity: 0.12 },
  floating: { elevation: 8, opacity: 0.15 },
}

Шрифт

Inter — основной шрифт. Загружается через @expo-google-fonts/inter.

Доступные начертания:

  • Inter_400Regular
  • Inter_500Medium
  • Inter_600SemiBold
  • Inter_700Bold