191 lines
3.8 KiB
TypeScript
191 lines
3.8 KiB
TypeScript
/**
|
|
* Below are the colors that are used in the app. The colors are defined in the light and dark mode.
|
|
* There are many other ways to style your app. For example, [Nativewind](https://www.nativewind.dev/), [Tamagui](https://tamagui.dev/), [unistyles](https://reactnativeunistyles.vercel.app), etc.
|
|
*/
|
|
|
|
import { Platform } from 'react-native';
|
|
|
|
const tintColorLight = '#0a7ea4';
|
|
const tintColorDark = '#fff';
|
|
|
|
export const Colors = {
|
|
light: {
|
|
text: '#11181C',
|
|
background: '#fff',
|
|
tint: tintColorLight,
|
|
icon: '#687076',
|
|
tabIconDefault: '#687076',
|
|
tabIconSelected: tintColorLight,
|
|
card: '#fff',
|
|
cardBorder: '#e0e0e0',
|
|
categoryBadge: '#007AFF',
|
|
categoryBadgeText: '#fff',
|
|
tagBadge: '#e0e0e0',
|
|
tagBadgeText: '#11181C',
|
|
imagePlaceholder: '#f0f0f0',
|
|
error: '#ff3b30',
|
|
border: '#e0e0e0',
|
|
textPlaceholder: '#A0A4AB',
|
|
},
|
|
dark: {
|
|
text: '#ECEDEE',
|
|
background: '#151718',
|
|
tint: tintColorDark,
|
|
icon: '#9BA1A6',
|
|
tabIconDefault: '#9BA1A6',
|
|
tabIconSelected: tintColorDark,
|
|
card: '#1F2223',
|
|
cardBorder: '#2C2E2F',
|
|
categoryBadge: '#0A84FF',
|
|
categoryBadgeText: '#fff',
|
|
tagBadge: '#2C2E2F',
|
|
tagBadgeText: '#ECEDEE',
|
|
imagePlaceholder: '#2C2E2F',
|
|
error: '#ff453a',
|
|
border: '#2C2E2F',
|
|
textPlaceholder: '#8A8F9C',
|
|
},
|
|
brand: {
|
|
primary: '#007AFF',
|
|
secondary: '#4ECDC4',
|
|
points: '#FF6B6B',
|
|
success: '#07C160',
|
|
danger: '#FF4444',
|
|
warning: '#FF9500',
|
|
},
|
|
text: {
|
|
primary: '#333333',
|
|
secondary: '#666666',
|
|
tertiary: '#999999',
|
|
},
|
|
background: {
|
|
primary: '#F5F5F5',
|
|
secondary: '#FFFFFF',
|
|
tertiary: '#FAFAFA',
|
|
},
|
|
border: '#E0E0E0',
|
|
};
|
|
|
|
export const Spacing = {
|
|
xs: 4,
|
|
sm: 8,
|
|
md: 16,
|
|
lg: 20,
|
|
xl: 24,
|
|
xxl: 32,
|
|
};
|
|
|
|
export const BorderRadius = {
|
|
sm: 8,
|
|
md: 12,
|
|
lg: 16,
|
|
xl: 20,
|
|
xxl: 28,
|
|
full: 999,
|
|
};
|
|
|
|
export const FontSize = {
|
|
xs: 12,
|
|
sm: 14,
|
|
md: 16,
|
|
lg: 18,
|
|
xl: 20,
|
|
xxl: 24,
|
|
title: 28,
|
|
};
|
|
|
|
export const Shadow = {
|
|
small: {
|
|
shadowColor: '#000000',
|
|
shadowOffset: {
|
|
width: 0,
|
|
height: 2,
|
|
},
|
|
shadowOpacity: 0.05,
|
|
shadowRadius: 4,
|
|
elevation: 2,
|
|
},
|
|
medium: {
|
|
shadowColor: '#000000',
|
|
shadowOffset: {
|
|
width: 0,
|
|
height: 4,
|
|
},
|
|
shadowOpacity: 0.1,
|
|
shadowRadius: 8,
|
|
elevation: 4,
|
|
},
|
|
large: {
|
|
shadowColor: '#000000',
|
|
shadowOffset: {
|
|
width: 0,
|
|
height: 8,
|
|
},
|
|
shadowOpacity: 0.15,
|
|
shadowRadius: 12,
|
|
elevation: 8,
|
|
},
|
|
};
|
|
|
|
export const Animation = {
|
|
scale: {
|
|
pressed: 0.98,
|
|
},
|
|
duration: {
|
|
fast: 200,
|
|
normal: 300,
|
|
slow: 500,
|
|
},
|
|
};
|
|
|
|
export const Layout = {
|
|
headerHeight: 56,
|
|
buttonHeight: {
|
|
small: 36,
|
|
medium: 48,
|
|
large: 56,
|
|
},
|
|
tabBarHeight: 60,
|
|
safeAreaPadding: {
|
|
top: 16,
|
|
bottom: 16,
|
|
left: 16,
|
|
right: 16,
|
|
},
|
|
};
|
|
|
|
export const Fonts = Platform.select({
|
|
ios: {
|
|
/** iOS `UIFontDescriptorSystemDesignDefault` */
|
|
sans: 'system-ui',
|
|
/** iOS `UIFontDescriptorSystemDesignSerif` */
|
|
serif: 'ui-serif',
|
|
/** iOS `UIFontDescriptorSystemDesignRounded` */
|
|
rounded: 'ui-rounded',
|
|
/** iOS `UIFontDescriptorSystemDesignMonospaced` */
|
|
mono: 'ui-monospace',
|
|
},
|
|
default: {
|
|
sans: 'normal',
|
|
serif: 'serif',
|
|
rounded: 'normal',
|
|
mono: 'monospace',
|
|
},
|
|
web: {
|
|
sans: "system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif",
|
|
serif: "Georgia, 'Times New Roman', serif",
|
|
rounded: "'SF Pro Rounded', 'Hiragino Maru Gothic ProN', Meiryo, 'MS PGothic', sans-serif",
|
|
mono: "SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
|
|
},
|
|
});
|
|
|
|
export const Theme = {
|
|
colors: Colors,
|
|
spacing: Spacing,
|
|
borderRadius: BorderRadius,
|
|
fontSize: FontSize,
|
|
shadow: Shadow,
|
|
animation: Animation,
|
|
layout: Layout,
|
|
};
|