Cleanup
This commit is contained in:
+4
-3
@@ -2,6 +2,7 @@ import React from 'react'
|
||||
import {Dimensions} from 'react-native'
|
||||
|
||||
import * as themes from '#/alf/themes'
|
||||
import {Theme, ThemeName} from '#/alf/types'
|
||||
|
||||
export {atoms} from '#/alf/atoms'
|
||||
export * as tokens from '#/alf/tokens'
|
||||
@@ -39,8 +40,8 @@ function getActiveBreakpoints({width}: {width: number}) {
|
||||
* Context
|
||||
*/
|
||||
export const Context = React.createContext<{
|
||||
themeName: themes.ThemeName
|
||||
theme: themes.Theme
|
||||
themeName: ThemeName
|
||||
theme: Theme
|
||||
breakpoints: {
|
||||
active: BreakpointName | undefined
|
||||
gtPhone: boolean
|
||||
@@ -61,7 +62,7 @@ export const Context = React.createContext<{
|
||||
export function ThemeProvider({
|
||||
children,
|
||||
theme: themeName,
|
||||
}: React.PropsWithChildren<{theme: themes.ThemeName}>) {
|
||||
}: React.PropsWithChildren<{theme: ThemeName}>) {
|
||||
const theme = themes[themeName]
|
||||
const [breakpoints, setBreakpoints] = React.useState(() =>
|
||||
getActiveBreakpoints({width: Dimensions.get('window').width}),
|
||||
|
||||
+78
-226
@@ -1,159 +1,7 @@
|
||||
import {atoms} from '#/alf/atoms'
|
||||
import * as tokens from '#/alf/tokens'
|
||||
import {Palette, Theme} from '#/alf/types'
|
||||
import {BLUE_HUE, GREEN_HUE, RED_HUE} from '#/alf/util/colorGeneration'
|
||||
|
||||
export type ThemeName = 'light' | 'dim' | 'dark'
|
||||
export type Palette = {
|
||||
white: string
|
||||
black: string
|
||||
|
||||
contrast_25: string
|
||||
contrast_50: string
|
||||
contrast_100: string
|
||||
contrast_200: string
|
||||
contrast_300: string
|
||||
contrast_400: string
|
||||
contrast_500: string
|
||||
contrast_600: string
|
||||
contrast_700: string
|
||||
contrast_800: string
|
||||
contrast_900: string
|
||||
contrast_950: string
|
||||
contrast_975: string
|
||||
|
||||
primary_25: string
|
||||
primary_50: string
|
||||
primary_100: string
|
||||
primary_200: string
|
||||
primary_300: string
|
||||
primary_400: string
|
||||
primary_500: string
|
||||
primary_600: string
|
||||
primary_700: string
|
||||
primary_800: string
|
||||
primary_900: string
|
||||
primary_950: string
|
||||
primary_975: string
|
||||
|
||||
positive_25: string
|
||||
positive_50: string
|
||||
positive_100: string
|
||||
positive_200: string
|
||||
positive_300: string
|
||||
positive_400: string
|
||||
positive_500: string
|
||||
positive_600: string
|
||||
positive_700: string
|
||||
positive_800: string
|
||||
positive_900: string
|
||||
positive_950: string
|
||||
positive_975: string
|
||||
|
||||
negative_25: string
|
||||
negative_50: string
|
||||
negative_100: string
|
||||
negative_200: string
|
||||
negative_300: string
|
||||
negative_400: string
|
||||
negative_500: string
|
||||
negative_600: string
|
||||
negative_700: string
|
||||
negative_800: string
|
||||
negative_900: string
|
||||
negative_950: string
|
||||
negative_975: string
|
||||
}
|
||||
export type ThemedAtoms = {
|
||||
text: {
|
||||
color: string
|
||||
}
|
||||
text_contrast_low: {
|
||||
color: string
|
||||
}
|
||||
text_contrast_medium: {
|
||||
color: string
|
||||
}
|
||||
text_contrast_high: {
|
||||
color: string
|
||||
}
|
||||
text_inverted: {
|
||||
color: string
|
||||
}
|
||||
bg: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_25: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_50: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_100: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_200: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_300: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_400: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_500: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_600: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_700: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_800: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_900: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_950: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_975: {
|
||||
backgroundColor: string
|
||||
}
|
||||
border_contrast_low: {
|
||||
borderColor: string
|
||||
}
|
||||
border_contrast_medium: {
|
||||
borderColor: string
|
||||
}
|
||||
border_contrast_high: {
|
||||
borderColor: string
|
||||
}
|
||||
shadow_sm: {
|
||||
shadowRadius: number
|
||||
shadowOpacity: number
|
||||
elevation: number
|
||||
shadowColor: string
|
||||
}
|
||||
shadow_md: {
|
||||
shadowRadius: number
|
||||
shadowOpacity: number
|
||||
elevation: number
|
||||
shadowColor: string
|
||||
}
|
||||
shadow_lg: {
|
||||
shadowRadius: number
|
||||
shadowOpacity: number
|
||||
elevation: number
|
||||
shadowColor: string
|
||||
}
|
||||
}
|
||||
export type Theme = {
|
||||
name: ThemeName
|
||||
palette: Palette
|
||||
atoms: ThemedAtoms
|
||||
}
|
||||
import {generateScale} from '#/alf/util/colorGeneration'
|
||||
|
||||
const themes = createThemes({
|
||||
hues: {
|
||||
@@ -163,10 +11,6 @@ const themes = createThemes({
|
||||
},
|
||||
})
|
||||
|
||||
export const light = themes.light
|
||||
export const dark = themes.dark
|
||||
export const dim = themes.dim
|
||||
|
||||
/**
|
||||
* @deprecated use ALF and access palette from `useTheme()`
|
||||
*/
|
||||
@@ -180,6 +24,14 @@ export const darkPalette = themes.darkPalette
|
||||
*/
|
||||
export const dimPalette = themes.dimPalette
|
||||
|
||||
export const light = themes.light
|
||||
export const dark = themes.dark
|
||||
export const dim = themes.dim
|
||||
|
||||
const scale = generateScale(6, 100)
|
||||
// dim shifted 6% lighter
|
||||
const dimScale = generateScale(12, 100)
|
||||
|
||||
export function createThemes({
|
||||
hues,
|
||||
}: {
|
||||
@@ -202,21 +54,21 @@ export function createThemes({
|
||||
temp_purple: 'rgb(105 0 255)',
|
||||
temp_purple_dark: 'rgb(83 0 202)',
|
||||
|
||||
gray_0: `hsl(${hues.primary}, 20%, ${tokens.scale[14]}%)`,
|
||||
gray_25: `hsl(${hues.primary}, 20%, ${tokens.scale[13]}%)`,
|
||||
gray_50: `hsl(${hues.primary}, 20%, ${tokens.scale[12]}%)`,
|
||||
gray_100: `hsl(${hues.primary}, 20%, ${tokens.scale[11]}%)`,
|
||||
gray_200: `hsl(${hues.primary}, 20%, ${tokens.scale[10]}%)`,
|
||||
gray_300: `hsl(${hues.primary}, 20%, ${tokens.scale[9]}%)`,
|
||||
gray_400: `hsl(${hues.primary}, 20%, ${tokens.scale[8]}%)`,
|
||||
gray_500: `hsl(${hues.primary}, 20%, ${tokens.scale[7]}%)`,
|
||||
gray_600: `hsl(${hues.primary}, 24%, ${tokens.scale[6]}%)`,
|
||||
gray_700: `hsl(${hues.primary}, 24%, ${tokens.scale[5]}%)`,
|
||||
gray_800: `hsl(${hues.primary}, 28%, ${tokens.scale[4]}%)`,
|
||||
gray_900: `hsl(${hues.primary}, 28%, ${tokens.scale[3]}%)`,
|
||||
gray_950: `hsl(${hues.primary}, 28%, ${tokens.scale[2]}%)`,
|
||||
gray_975: `hsl(${hues.primary}, 28%, ${tokens.scale[1]}%)`,
|
||||
gray_1000: `hsl(${hues.primary}, 28%, ${tokens.scale[0]}%)`,
|
||||
gray_0: `hsl(${hues.primary}, 20%, ${scale[14]}%)`,
|
||||
gray_25: `hsl(${hues.primary}, 20%, ${scale[13]}%)`,
|
||||
gray_50: `hsl(${hues.primary}, 20%, ${scale[12]}%)`,
|
||||
gray_100: `hsl(${hues.primary}, 20%, ${scale[11]}%)`,
|
||||
gray_200: `hsl(${hues.primary}, 20%, ${scale[10]}%)`,
|
||||
gray_300: `hsl(${hues.primary}, 20%, ${scale[9]}%)`,
|
||||
gray_400: `hsl(${hues.primary}, 20%, ${scale[8]}%)`,
|
||||
gray_500: `hsl(${hues.primary}, 20%, ${scale[7]}%)`,
|
||||
gray_600: `hsl(${hues.primary}, 24%, ${scale[6]}%)`,
|
||||
gray_700: `hsl(${hues.primary}, 24%, ${scale[5]}%)`,
|
||||
gray_800: `hsl(${hues.primary}, 28%, ${scale[4]}%)`,
|
||||
gray_900: `hsl(${hues.primary}, 28%, ${scale[3]}%)`,
|
||||
gray_950: `hsl(${hues.primary}, 28%, ${scale[2]}%)`,
|
||||
gray_975: `hsl(${hues.primary}, 28%, ${scale[1]}%)`,
|
||||
gray_1000: `hsl(${hues.primary}, 28%, ${scale[0]}%)`,
|
||||
|
||||
primary_25: `hsl(${hues.primary}, 99%, 97%)`,
|
||||
primary_50: `hsl(${hues.primary}, 99%, 95%)`,
|
||||
@@ -385,63 +237,63 @@ export function createThemes({
|
||||
|
||||
const dimPalette: Palette = {
|
||||
...darkPalette,
|
||||
black: `hsl(${hues.primary}, 28%, ${tokens.dimScale[0]}%)`,
|
||||
black: `hsl(${hues.primary}, 28%, ${dimScale[0]}%)`,
|
||||
|
||||
contrast_25: `hsl(${hues.primary}, 28%, ${tokens.dimScale[1]}%)`,
|
||||
contrast_50: `hsl(${hues.primary}, 28%, ${tokens.dimScale[2]}%)`,
|
||||
contrast_100: `hsl(${hues.primary}, 28%, ${tokens.dimScale[3]}%)`,
|
||||
contrast_200: `hsl(${hues.primary}, 28%, ${tokens.dimScale[4]}%)`,
|
||||
contrast_300: `hsl(${hues.primary}, 24%, ${tokens.dimScale[5]}%)`,
|
||||
contrast_400: `hsl(${hues.primary}, 24%, ${tokens.dimScale[6]}%)`,
|
||||
contrast_500: `hsl(${hues.primary}, 20%, ${tokens.dimScale[7]}%)`,
|
||||
contrast_600: `hsl(${hues.primary}, 20%, ${tokens.dimScale[8]}%)`,
|
||||
contrast_700: `hsl(${hues.primary}, 20%, ${tokens.dimScale[9]}%)`,
|
||||
contrast_800: `hsl(${hues.primary}, 20%, ${tokens.dimScale[10]}%)`,
|
||||
contrast_900: `hsl(${hues.primary}, 20%, ${tokens.dimScale[11]}%)`,
|
||||
contrast_950: `hsl(${hues.primary}, 20%, ${tokens.dimScale[12]}%)`,
|
||||
contrast_975: `hsl(${hues.primary}, 20%, ${tokens.dimScale[13]}%)`,
|
||||
contrast_25: `hsl(${hues.primary}, 28%, ${dimScale[1]}%)`,
|
||||
contrast_50: `hsl(${hues.primary}, 28%, ${dimScale[2]}%)`,
|
||||
contrast_100: `hsl(${hues.primary}, 28%, ${dimScale[3]}%)`,
|
||||
contrast_200: `hsl(${hues.primary}, 28%, ${dimScale[4]}%)`,
|
||||
contrast_300: `hsl(${hues.primary}, 24%, ${dimScale[5]}%)`,
|
||||
contrast_400: `hsl(${hues.primary}, 24%, ${dimScale[6]}%)`,
|
||||
contrast_500: `hsl(${hues.primary}, 20%, ${dimScale[7]}%)`,
|
||||
contrast_600: `hsl(${hues.primary}, 20%, ${dimScale[8]}%)`,
|
||||
contrast_700: `hsl(${hues.primary}, 20%, ${dimScale[9]}%)`,
|
||||
contrast_800: `hsl(${hues.primary}, 20%, ${dimScale[10]}%)`,
|
||||
contrast_900: `hsl(${hues.primary}, 20%, ${dimScale[11]}%)`,
|
||||
contrast_950: `hsl(${hues.primary}, 20%, ${dimScale[12]}%)`,
|
||||
contrast_975: `hsl(${hues.primary}, 20%, ${dimScale[13]}%)`,
|
||||
|
||||
primary_25: `hsl(${hues.primary}, 99%, ${tokens.dimScale[1]}%)`,
|
||||
primary_50: `hsl(${hues.primary}, 99%, ${tokens.dimScale[2]}%)`,
|
||||
primary_100: `hsl(${hues.primary}, 99%, ${tokens.dimScale[3]}%)`,
|
||||
primary_200: `hsl(${hues.primary}, 99%, ${tokens.dimScale[4]}%)`,
|
||||
primary_300: `hsl(${hues.primary}, 99%, ${tokens.dimScale[5]}%)`,
|
||||
primary_400: `hsl(${hues.primary}, 99%, ${tokens.dimScale[6]}%)`,
|
||||
primary_500: `hsl(${hues.primary}, 99%, ${tokens.dimScale[7]}%)`,
|
||||
primary_600: `hsl(${hues.primary}, 95%, ${tokens.dimScale[8]}%)`,
|
||||
primary_700: `hsl(${hues.primary}, 90%, ${tokens.dimScale[9]}%)`,
|
||||
primary_800: `hsl(${hues.primary}, 82%, ${tokens.dimScale[10]}%)`,
|
||||
primary_900: `hsl(${hues.primary}, 70%, ${tokens.dimScale[11]}%)`,
|
||||
primary_950: `hsl(${hues.primary}, 60%, ${tokens.dimScale[12]}%)`,
|
||||
primary_975: `hsl(${hues.primary}, 50%, ${tokens.dimScale[13]}%)`,
|
||||
primary_25: `hsl(${hues.primary}, 99%, ${dimScale[1]}%)`,
|
||||
primary_50: `hsl(${hues.primary}, 99%, ${dimScale[2]}%)`,
|
||||
primary_100: `hsl(${hues.primary}, 99%, ${dimScale[3]}%)`,
|
||||
primary_200: `hsl(${hues.primary}, 99%, ${dimScale[4]}%)`,
|
||||
primary_300: `hsl(${hues.primary}, 99%, ${dimScale[5]}%)`,
|
||||
primary_400: `hsl(${hues.primary}, 99%, ${dimScale[6]}%)`,
|
||||
primary_500: `hsl(${hues.primary}, 99%, ${dimScale[7]}%)`,
|
||||
primary_600: `hsl(${hues.primary}, 95%, ${dimScale[8]}%)`,
|
||||
primary_700: `hsl(${hues.primary}, 90%, ${dimScale[9]}%)`,
|
||||
primary_800: `hsl(${hues.primary}, 82%, ${dimScale[10]}%)`,
|
||||
primary_900: `hsl(${hues.primary}, 70%, ${dimScale[11]}%)`,
|
||||
primary_950: `hsl(${hues.primary}, 60%, ${dimScale[12]}%)`,
|
||||
primary_975: `hsl(${hues.primary}, 50%, ${dimScale[13]}%)`,
|
||||
|
||||
positive_25: `hsl(${hues.positive}, 82%, ${tokens.dimScale[13]}%)`,
|
||||
positive_50: `hsl(${hues.positive}, 82%, ${tokens.dimScale[12]}%)`,
|
||||
positive_100: `hsl(${hues.positive}, 82%, ${tokens.dimScale[11]}%)`,
|
||||
positive_200: `hsl(${hues.positive}, 82%, ${tokens.dimScale[10]}%)`,
|
||||
positive_300: `hsl(${hues.positive}, 82%, ${tokens.dimScale[9]}%)`,
|
||||
positive_400: `hsl(${hues.positive}, 82%, ${tokens.dimScale[8]}%)`,
|
||||
positive_500: `hsl(${hues.positive}, 82%, ${tokens.dimScale[7]}%)`,
|
||||
positive_600: `hsl(${hues.positive}, 82%, ${tokens.dimScale[6]}%)`,
|
||||
positive_700: `hsl(${hues.positive}, 82%, ${tokens.dimScale[5]}%)`,
|
||||
positive_800: `hsl(${hues.positive}, 82%, ${tokens.dimScale[4]}%)`,
|
||||
positive_900: `hsl(${hues.positive}, 70%, ${tokens.dimScale[3]}%)`,
|
||||
positive_950: `hsl(${hues.positive}, 60%, ${tokens.dimScale[2]}%)`,
|
||||
positive_975: `hsl(${hues.positive}, 50%, ${tokens.dimScale[1]}%)`,
|
||||
positive_25: `hsl(${hues.positive}, 82%, ${dimScale[13]}%)`,
|
||||
positive_50: `hsl(${hues.positive}, 82%, ${dimScale[12]}%)`,
|
||||
positive_100: `hsl(${hues.positive}, 82%, ${dimScale[11]}%)`,
|
||||
positive_200: `hsl(${hues.positive}, 82%, ${dimScale[10]}%)`,
|
||||
positive_300: `hsl(${hues.positive}, 82%, ${dimScale[9]}%)`,
|
||||
positive_400: `hsl(${hues.positive}, 82%, ${dimScale[8]}%)`,
|
||||
positive_500: `hsl(${hues.positive}, 82%, ${dimScale[7]}%)`,
|
||||
positive_600: `hsl(${hues.positive}, 82%, ${dimScale[6]}%)`,
|
||||
positive_700: `hsl(${hues.positive}, 82%, ${dimScale[5]}%)`,
|
||||
positive_800: `hsl(${hues.positive}, 82%, ${dimScale[4]}%)`,
|
||||
positive_900: `hsl(${hues.positive}, 70%, ${dimScale[3]}%)`,
|
||||
positive_950: `hsl(${hues.positive}, 60%, ${dimScale[2]}%)`,
|
||||
positive_975: `hsl(${hues.positive}, 50%, ${dimScale[1]}%)`,
|
||||
|
||||
negative_25: `hsl(${hues.negative}, 91%, ${tokens.dimScale[1]}%)`,
|
||||
negative_50: `hsl(${hues.negative}, 91%, ${tokens.dimScale[2]}%)`,
|
||||
negative_100: `hsl(${hues.negative}, 91%, ${tokens.dimScale[3]}%)`,
|
||||
negative_200: `hsl(${hues.negative}, 91%, ${tokens.dimScale[4]}%)`,
|
||||
negative_300: `hsl(${hues.negative}, 91%, ${tokens.dimScale[5]}%)`,
|
||||
negative_400: `hsl(${hues.negative}, 91%, ${tokens.dimScale[6]}%)`,
|
||||
negative_500: `hsl(${hues.negative}, 91%, ${tokens.dimScale[7]}%)`,
|
||||
negative_600: `hsl(${hues.negative}, 91%, ${tokens.dimScale[8]}%)`,
|
||||
negative_700: `hsl(${hues.negative}, 91%, ${tokens.dimScale[9]}%)`,
|
||||
negative_800: `hsl(${hues.negative}, 88%, ${tokens.dimScale[10]}%)`,
|
||||
negative_900: `hsl(${hues.negative}, 84%, ${tokens.dimScale[11]}%)`,
|
||||
negative_950: `hsl(${hues.negative}, 80%, ${tokens.dimScale[12]}%)`,
|
||||
negative_975: `hsl(${hues.negative}, 70%, ${tokens.dimScale[13]}%)`,
|
||||
negative_25: `hsl(${hues.negative}, 91%, ${dimScale[1]}%)`,
|
||||
negative_50: `hsl(${hues.negative}, 91%, ${dimScale[2]}%)`,
|
||||
negative_100: `hsl(${hues.negative}, 91%, ${dimScale[3]}%)`,
|
||||
negative_200: `hsl(${hues.negative}, 91%, ${dimScale[4]}%)`,
|
||||
negative_300: `hsl(${hues.negative}, 91%, ${dimScale[5]}%)`,
|
||||
negative_400: `hsl(${hues.negative}, 91%, ${dimScale[6]}%)`,
|
||||
negative_500: `hsl(${hues.negative}, 91%, ${dimScale[7]}%)`,
|
||||
negative_600: `hsl(${hues.negative}, 91%, ${dimScale[8]}%)`,
|
||||
negative_700: `hsl(${hues.negative}, 91%, ${dimScale[9]}%)`,
|
||||
negative_800: `hsl(${hues.negative}, 88%, ${dimScale[10]}%)`,
|
||||
negative_900: `hsl(${hues.negative}, 84%, ${dimScale[11]}%)`,
|
||||
negative_950: `hsl(${hues.negative}, 80%, ${dimScale[12]}%)`,
|
||||
negative_975: `hsl(${hues.negative}, 70%, ${dimScale[13]}%)`,
|
||||
} as const
|
||||
|
||||
const light: Theme = {
|
||||
|
||||
@@ -1,77 +1,6 @@
|
||||
import {
|
||||
BLUE_HUE,
|
||||
generateScale,
|
||||
GREEN_HUE,
|
||||
RED_HUE,
|
||||
} from '#/alf/util/colorGeneration'
|
||||
|
||||
export const scale = generateScale(6, 100)
|
||||
// dim shifted 6% lighter
|
||||
export const dimScale = generateScale(12, 100)
|
||||
|
||||
export const color = {
|
||||
trueBlack: '#000000',
|
||||
|
||||
temp_purple: 'rgb(105 0 255)',
|
||||
temp_purple_dark: 'rgb(83 0 202)',
|
||||
|
||||
gray_0: `hsl(${BLUE_HUE}, 20%, ${scale[14]}%)`,
|
||||
gray_25: `hsl(${BLUE_HUE}, 20%, ${scale[13]}%)`,
|
||||
gray_50: `hsl(${BLUE_HUE}, 20%, ${scale[12]}%)`,
|
||||
gray_100: `hsl(${BLUE_HUE}, 20%, ${scale[11]}%)`,
|
||||
gray_200: `hsl(${BLUE_HUE}, 20%, ${scale[10]}%)`,
|
||||
gray_300: `hsl(${BLUE_HUE}, 20%, ${scale[9]}%)`,
|
||||
gray_400: `hsl(${BLUE_HUE}, 20%, ${scale[8]}%)`,
|
||||
gray_500: `hsl(${BLUE_HUE}, 20%, ${scale[7]}%)`,
|
||||
gray_600: `hsl(${BLUE_HUE}, 24%, ${scale[6]}%)`,
|
||||
gray_700: `hsl(${BLUE_HUE}, 24%, ${scale[5]}%)`,
|
||||
gray_800: `hsl(${BLUE_HUE}, 28%, ${scale[4]}%)`,
|
||||
gray_900: `hsl(${BLUE_HUE}, 28%, ${scale[3]}%)`,
|
||||
gray_950: `hsl(${BLUE_HUE}, 28%, ${scale[2]}%)`,
|
||||
gray_975: `hsl(${BLUE_HUE}, 28%, ${scale[1]}%)`,
|
||||
gray_1000: `hsl(${BLUE_HUE}, 28%, ${scale[0]}%)`,
|
||||
|
||||
blue_25: `hsl(${BLUE_HUE}, 99%, 97%)`,
|
||||
blue_50: `hsl(${BLUE_HUE}, 99%, 95%)`,
|
||||
blue_100: `hsl(${BLUE_HUE}, 99%, 90%)`,
|
||||
blue_200: `hsl(${BLUE_HUE}, 99%, 80%)`,
|
||||
blue_300: `hsl(${BLUE_HUE}, 99%, 70%)`,
|
||||
blue_400: `hsl(${BLUE_HUE}, 99%, 60%)`,
|
||||
blue_500: `hsl(${BLUE_HUE}, 99%, 53%)`,
|
||||
blue_600: `hsl(${BLUE_HUE}, 99%, 42%)`,
|
||||
blue_700: `hsl(${BLUE_HUE}, 99%, 34%)`,
|
||||
blue_800: `hsl(${BLUE_HUE}, 99%, 26%)`,
|
||||
blue_900: `hsl(${BLUE_HUE}, 99%, 18%)`,
|
||||
blue_950: `hsl(${BLUE_HUE}, 99%, 10%)`,
|
||||
blue_975: `hsl(${BLUE_HUE}, 99%, 7%)`,
|
||||
|
||||
green_25: `hsl(${GREEN_HUE}, 82%, 97%)`,
|
||||
green_50: `hsl(${GREEN_HUE}, 82%, 95%)`,
|
||||
green_100: `hsl(${GREEN_HUE}, 82%, 90%)`,
|
||||
green_200: `hsl(${GREEN_HUE}, 82%, 80%)`,
|
||||
green_300: `hsl(${GREEN_HUE}, 82%, 70%)`,
|
||||
green_400: `hsl(${GREEN_HUE}, 82%, 60%)`,
|
||||
green_500: `hsl(${GREEN_HUE}, 82%, 50%)`,
|
||||
green_600: `hsl(${GREEN_HUE}, 82%, 42%)`,
|
||||
green_700: `hsl(${GREEN_HUE}, 82%, 34%)`,
|
||||
green_800: `hsl(${GREEN_HUE}, 82%, 26%)`,
|
||||
green_900: `hsl(${GREEN_HUE}, 82%, 18%)`,
|
||||
green_950: `hsl(${GREEN_HUE}, 82%, 10%)`,
|
||||
green_975: `hsl(${GREEN_HUE}, 82%, 7%)`,
|
||||
|
||||
red_25: `hsl(${RED_HUE}, 91%, 97%)`,
|
||||
red_50: `hsl(${RED_HUE}, 91%, 95%)`,
|
||||
red_100: `hsl(${RED_HUE}, 91%, 90%)`,
|
||||
red_200: `hsl(${RED_HUE}, 91%, 80%)`,
|
||||
red_300: `hsl(${RED_HUE}, 91%, 70%)`,
|
||||
red_400: `hsl(${RED_HUE}, 91%, 60%)`,
|
||||
red_500: `hsl(${RED_HUE}, 91%, 50%)`,
|
||||
red_600: `hsl(${RED_HUE}, 91%, 42%)`,
|
||||
red_700: `hsl(${RED_HUE}, 91%, 34%)`,
|
||||
red_800: `hsl(${RED_HUE}, 91%, 26%)`,
|
||||
red_900: `hsl(${RED_HUE}, 91%, 18%)`,
|
||||
red_950: `hsl(${RED_HUE}, 91%, 10%)`,
|
||||
red_975: `hsl(${RED_HUE}, 91%, 7%)`,
|
||||
} as const
|
||||
|
||||
export const space = {
|
||||
@@ -178,10 +107,3 @@ export const gradients = {
|
||||
hover_value: '#755B62',
|
||||
},
|
||||
} as const
|
||||
|
||||
export type Color = keyof typeof color
|
||||
export type Space = keyof typeof space
|
||||
export type FontSize = keyof typeof fontSize
|
||||
export type LineHeight = keyof typeof lineHeight
|
||||
export type BorderRadius = keyof typeof borderRadius
|
||||
export type FontWeight = keyof typeof fontWeight
|
||||
|
||||
+154
-18
@@ -1,21 +1,4 @@
|
||||
import {StyleProp, ViewStyle, TextStyle} from 'react-native'
|
||||
|
||||
type LiteralToCommon<T extends PropertyKey> = T extends number
|
||||
? number
|
||||
: T extends string
|
||||
? string
|
||||
: T extends symbol
|
||||
? symbol
|
||||
: never
|
||||
|
||||
/**
|
||||
* @see https://stackoverflow.com/questions/68249999/use-as-const-in-typescript-without-adding-readonly-modifiers
|
||||
*/
|
||||
export type Mutable<T> = {
|
||||
-readonly [K in keyof T]: T[K] extends PropertyKey
|
||||
? LiteralToCommon<T[K]>
|
||||
: Mutable<T[K]>
|
||||
}
|
||||
import {StyleProp, TextStyle, ViewStyle} from 'react-native'
|
||||
|
||||
export type TextStyleProp = {
|
||||
style?: StyleProp<TextStyle>
|
||||
@@ -24,3 +7,156 @@ export type TextStyleProp = {
|
||||
export type ViewStyleProp = {
|
||||
style?: StyleProp<ViewStyle>
|
||||
}
|
||||
|
||||
export type ThemeName = 'light' | 'dim' | 'dark'
|
||||
export type Palette = {
|
||||
white: string
|
||||
black: string
|
||||
|
||||
contrast_25: string
|
||||
contrast_50: string
|
||||
contrast_100: string
|
||||
contrast_200: string
|
||||
contrast_300: string
|
||||
contrast_400: string
|
||||
contrast_500: string
|
||||
contrast_600: string
|
||||
contrast_700: string
|
||||
contrast_800: string
|
||||
contrast_900: string
|
||||
contrast_950: string
|
||||
contrast_975: string
|
||||
|
||||
primary_25: string
|
||||
primary_50: string
|
||||
primary_100: string
|
||||
primary_200: string
|
||||
primary_300: string
|
||||
primary_400: string
|
||||
primary_500: string
|
||||
primary_600: string
|
||||
primary_700: string
|
||||
primary_800: string
|
||||
primary_900: string
|
||||
primary_950: string
|
||||
primary_975: string
|
||||
|
||||
positive_25: string
|
||||
positive_50: string
|
||||
positive_100: string
|
||||
positive_200: string
|
||||
positive_300: string
|
||||
positive_400: string
|
||||
positive_500: string
|
||||
positive_600: string
|
||||
positive_700: string
|
||||
positive_800: string
|
||||
positive_900: string
|
||||
positive_950: string
|
||||
positive_975: string
|
||||
|
||||
negative_25: string
|
||||
negative_50: string
|
||||
negative_100: string
|
||||
negative_200: string
|
||||
negative_300: string
|
||||
negative_400: string
|
||||
negative_500: string
|
||||
negative_600: string
|
||||
negative_700: string
|
||||
negative_800: string
|
||||
negative_900: string
|
||||
negative_950: string
|
||||
negative_975: string
|
||||
}
|
||||
export type ThemedAtoms = {
|
||||
text: {
|
||||
color: string
|
||||
}
|
||||
text_contrast_low: {
|
||||
color: string
|
||||
}
|
||||
text_contrast_medium: {
|
||||
color: string
|
||||
}
|
||||
text_contrast_high: {
|
||||
color: string
|
||||
}
|
||||
text_inverted: {
|
||||
color: string
|
||||
}
|
||||
bg: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_25: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_50: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_100: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_200: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_300: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_400: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_500: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_600: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_700: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_800: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_900: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_950: {
|
||||
backgroundColor: string
|
||||
}
|
||||
bg_contrast_975: {
|
||||
backgroundColor: string
|
||||
}
|
||||
border_contrast_low: {
|
||||
borderColor: string
|
||||
}
|
||||
border_contrast_medium: {
|
||||
borderColor: string
|
||||
}
|
||||
border_contrast_high: {
|
||||
borderColor: string
|
||||
}
|
||||
shadow_sm: {
|
||||
shadowRadius: number
|
||||
shadowOpacity: number
|
||||
elevation: number
|
||||
shadowColor: string
|
||||
}
|
||||
shadow_md: {
|
||||
shadowRadius: number
|
||||
shadowOpacity: number
|
||||
elevation: number
|
||||
shadowColor: string
|
||||
}
|
||||
shadow_lg: {
|
||||
shadowRadius: number
|
||||
shadowOpacity: number
|
||||
elevation: number
|
||||
shadowColor: string
|
||||
}
|
||||
}
|
||||
export type Theme = {
|
||||
name: ThemeName
|
||||
palette: Palette
|
||||
atoms: ThemedAtoms
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import {ThemeName} from '#/alf/themes'
|
||||
import {ThemeName} from '#/alf/types'
|
||||
|
||||
export function select<T>(name: ThemeName, options: Record<ThemeName, T>) {
|
||||
switch (name) {
|
||||
|
||||
@@ -4,7 +4,8 @@ import * as SystemUI from 'expo-system-ui'
|
||||
|
||||
import {isWeb} from 'platform/detection'
|
||||
import {useThemePrefs} from 'state/shell'
|
||||
import {dark, dim, light, ThemeName} from '#/alf/themes'
|
||||
import {dark, dim, light} from '#/alf/themes'
|
||||
import {ThemeName} from '#/alf/types'
|
||||
|
||||
export function useColorModeTheme(): ThemeName {
|
||||
const theme = useThemeName()
|
||||
|
||||
@@ -4,7 +4,7 @@ import type {PathProps, SvgProps} from 'react-native-svg'
|
||||
import {Defs, LinearGradient, Stop} from 'react-native-svg'
|
||||
import {nanoid} from 'nanoid/non-secure'
|
||||
|
||||
import {tokens} from '#/alf'
|
||||
import {tokens, useTheme} from '#/alf'
|
||||
|
||||
export type Props = {
|
||||
fill?: PathProps['fill']
|
||||
@@ -22,10 +22,11 @@ export const sizes = {
|
||||
}
|
||||
|
||||
export function useCommonSVGProps(props: Props) {
|
||||
const t = useTheme()
|
||||
const {fill, size, gradient, ...rest} = props
|
||||
const style = StyleSheet.flatten(rest.style)
|
||||
const _size = Number(size ? sizes[size] : rest.width || sizes.md)
|
||||
let _fill = fill || style?.color || tokens.color.blue_500
|
||||
let _fill = fill || style?.color || t.palette.primary_500
|
||||
let gradientDef = null
|
||||
|
||||
if (gradient && tokens.gradients[gradient]) {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import React, {ReactNode, createContext, useContext} from 'react'
|
||||
import React, {createContext, ReactNode, useContext} from 'react'
|
||||
import {TextStyle, ViewStyle} from 'react-native'
|
||||
|
||||
import {ThemeName} from '#/alf/types'
|
||||
import {darkTheme, defaultTheme, dimTheme} from './themes'
|
||||
import {ThemeName} from '#/alf/themes'
|
||||
|
||||
export type ColorScheme = 'light' | 'dark'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user