feat: 增加了基础的设置相关内容
包括 子组件input、switch、alert、line、link、group 包括 实现 SettingStore 状态管理 (MobX) 支持持久化 包括 类型相关内容声明
This commit is contained in:
167
apps/expo/themes/basic.ts
Normal file
167
apps/expo/themes/basic.ts
Normal file
@@ -0,0 +1,167 @@
|
||||
import { createThemes, defaultComponentThemes } from '@tamagui/theme-builder'
|
||||
import * as Colors from '@tamagui/colors'
|
||||
|
||||
const darkPalette = [
|
||||
'hsla(165, 87%, 1%, 1)',
|
||||
'hsla(164, 86%, 6%, 1)',
|
||||
'hsla(162, 84%, 12%, 1)',
|
||||
'hsla(161, 83%, 17%, 1)',
|
||||
'hsla(159, 82%, 23%, 1)',
|
||||
'hsla(158, 80%, 28%, 1)',
|
||||
'hsla(156, 79%, 34%, 1)',
|
||||
'hsla(155, 78%, 39%, 1)',
|
||||
'hsla(153, 76%, 45%, 1)',
|
||||
'hsla(152, 75%, 50%, 1)',
|
||||
'hsla(0, 15%, 93%, 1)',
|
||||
'hsla(0, 15%, 99%, 1)',
|
||||
]
|
||||
const lightPalette = [
|
||||
'hsla(165, 87%, 99%, 1)',
|
||||
'hsla(164, 86%, 94%, 1)',
|
||||
'hsla(162, 84%, 88%, 1)',
|
||||
'hsla(161, 83%, 83%, 1)',
|
||||
'hsla(159, 82%, 77%, 1)',
|
||||
'hsla(158, 80%, 72%, 1)',
|
||||
'hsla(156, 79%, 66%, 1)',
|
||||
'hsla(155, 78%, 61%, 1)',
|
||||
'hsla(153, 76%, 55%, 1)',
|
||||
'hsla(152, 75%, 50%, 1)',
|
||||
'hsla(0, 15%, 15%, 1)',
|
||||
'hsla(0, 15%, 1%, 1)',
|
||||
]
|
||||
|
||||
const lightShadows = {
|
||||
shadow1: 'rgba(0,0,0,0.04)',
|
||||
shadow2: 'rgba(0,0,0,0.08)',
|
||||
shadow3: 'rgba(0,0,0,0.16)',
|
||||
shadow4: 'rgba(0,0,0,0.24)',
|
||||
shadow5: 'rgba(0,0,0,0.32)',
|
||||
shadow6: 'rgba(0,0,0,0.4)',
|
||||
}
|
||||
|
||||
const darkShadows = {
|
||||
shadow1: 'rgba(0,0,0,0.2)',
|
||||
shadow2: 'rgba(0,0,0,0.3)',
|
||||
shadow3: 'rgba(0,0,0,0.4)',
|
||||
shadow4: 'rgba(0,0,0,0.5)',
|
||||
shadow5: 'rgba(0,0,0,0.6)',
|
||||
shadow6: 'rgba(0,0,0,0.7)',
|
||||
}
|
||||
|
||||
// we're adding some example sub-themes for you to show how they are done, "success" "warning", "error":
|
||||
|
||||
const builtThemes = createThemes({
|
||||
componentThemes: defaultComponentThemes,
|
||||
|
||||
base: {
|
||||
palette: {
|
||||
dark: darkPalette,
|
||||
light: lightPalette,
|
||||
},
|
||||
|
||||
extra: {
|
||||
light: {
|
||||
...Colors.green,
|
||||
...Colors.red,
|
||||
...Colors.yellow,
|
||||
...lightShadows,
|
||||
shadowColor: lightShadows.shadow1,
|
||||
},
|
||||
dark: {
|
||||
...Colors.greenDark,
|
||||
...Colors.redDark,
|
||||
...Colors.yellowDark,
|
||||
...darkShadows,
|
||||
shadowColor: darkShadows.shadow1,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
accent: {
|
||||
palette: {
|
||||
dark: [
|
||||
'hsla(141, 52%, 35%, 1)',
|
||||
'hsla(153, 52%, 38%, 1)',
|
||||
'hsla(165, 52%, 41%, 1)',
|
||||
'hsla(177, 51%, 43%, 1)',
|
||||
'hsla(189, 51%, 46%, 1)',
|
||||
'hsla(202, 51%, 49%, 1)',
|
||||
'hsla(214, 51%, 52%, 1)',
|
||||
'hsla(226, 50%, 54%, 1)',
|
||||
'hsla(238, 50%, 57%, 1)',
|
||||
'hsla(250, 50%, 60%, 1)',
|
||||
'hsla(250, 50%, 90%, 1)',
|
||||
'hsla(250, 50%, 95%, 1)',
|
||||
],
|
||||
light: [
|
||||
'hsla(141, 52%, 40%, 1)',
|
||||
'hsla(153, 52%, 43%, 1)',
|
||||
'hsla(165, 52%, 46%, 1)',
|
||||
'hsla(177, 51%, 48%, 1)',
|
||||
'hsla(189, 51%, 51%, 1)',
|
||||
'hsla(202, 51%, 54%, 1)',
|
||||
'hsla(214, 51%, 57%, 1)',
|
||||
'hsla(226, 50%, 59%, 1)',
|
||||
'hsla(238, 50%, 62%, 1)',
|
||||
'hsla(250, 50%, 65%, 1)',
|
||||
'hsla(250, 50%, 95%, 1)',
|
||||
'hsla(250, 50%, 95%, 1)',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
childrenThemes: {
|
||||
warning: {
|
||||
palette: {
|
||||
dark: Object.values(Colors.yellowDark),
|
||||
light: Object.values(Colors.yellow),
|
||||
},
|
||||
},
|
||||
|
||||
error: {
|
||||
palette: {
|
||||
dark: Object.values(Colors.redDark),
|
||||
light: Object.values(Colors.red),
|
||||
},
|
||||
},
|
||||
|
||||
success: {
|
||||
palette: {
|
||||
dark: Object.values(Colors.greenDark),
|
||||
light: Object.values(Colors.green),
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
// optionally add more, can pass palette or template
|
||||
|
||||
// grandChildrenThemes: {
|
||||
// alt1: {
|
||||
// template: 'alt1',
|
||||
// },
|
||||
// alt2: {
|
||||
// template: 'alt2',
|
||||
// },
|
||||
// surface1: {
|
||||
// template: 'surface1',
|
||||
// },
|
||||
// surface2: {
|
||||
// template: 'surface2',
|
||||
// },
|
||||
// surface3: {
|
||||
// template: 'surface3',
|
||||
// },
|
||||
// },
|
||||
})
|
||||
|
||||
export type Themes = typeof builtThemes
|
||||
|
||||
// the process.env conditional here is optional but saves web client-side bundle
|
||||
// size by leaving out themes JS. tamagui automatically hydrates themes from CSS
|
||||
// back into JS for you, and the bundler plugins set TAMAGUI_ENVIRONMENT. so
|
||||
// long as you are using the Vite, Next, Webpack plugins this should just work,
|
||||
// but if not you can just export builtThemes directly as themes:
|
||||
export const basicThemes: Themes =
|
||||
process.env.TAMAGUI_ENVIRONMENT === 'client' && process.env.NODE_ENV === 'production'
|
||||
? ({} as any)
|
||||
: (builtThemes as any)
|
||||
Reference in New Issue
Block a user