//import { transparentize } from 'polished' //import React, { useMemo } from 'react import React from 'react' import styled, { ThemeProvider as StyledComponentsThemeProvider, createGlobalStyle, css, DefaultTheme } from 'styled-components' //import { useIsDarkMode } from '../state/user/hooks' import { Text, TextProps } from 'rebass' import { Colors } from './styled' import BackgroundImage from '../assets/images/background-min.png' export * from './components' const MEDIA_WIDTHS = { upToExtraSmall: 500, upToSmall: 600, upToMedium: 960, upToLarge: 1280 } const mediaWidthTemplates: { [width in keyof typeof MEDIA_WIDTHS]: typeof css } = Object.keys(MEDIA_WIDTHS).reduce( (accumulator, size) => { ;(accumulator as any)[size] = (a: any, b: any, c: any) => css` @media (max-width: ${(MEDIA_WIDTHS as any)[size]}px) { ${css(a, b, c)} } ` return accumulator }, {} ) as any const white = '#FFFFFF' const black = '#000000' export function colors(): Colors { return { // base white, black, // text text1: '#FFFFFF', text2: '#C3C5CB', text3: '#6C7284', text4: '#565A69', text5: '#2C2F36', // backgrounds / greys bg1: '#212429', bg2: '#2C2F36', bg3: '#40444F', bg4: '#565A69', bg5: '#6C7284', //specialty colors modalBG: 'rgba(0,0,0,.425)', advancedBG: 'rgba(0,0,0,0.1)', //primary colors primary1: '#2172E5', primary2: '#3680E7', primary3: '#4D8FEA', primary4: '#376bad70', primary5: '#153d6f70', // color text primaryText1: '#6da8ff', // secondary colors secondary1: '#2172E5', secondary2: '#17000b26', secondary3: '#17000b26', // other red1: '#FF6871', red2: '#F82D3A', green1: '#27AE60', yellow1: '#FFE270', yellow2: '#F3841E' // dont wanna forget these blue yet // blue4: darkMode ? '#153d6f70' : '#C4D9F8', // blue5: darkMode ? '#153d6f70' : '#EBF4FF', } } export function theme(): DefaultTheme { return { ...colors(), grids: { sm: 8, md: 12, lg: 24 }, //shadows shadow1: '#000', // media queries mediaWidth: mediaWidthTemplates, // css snippets flexColumnNoWrap: css` display: flex; flex-flow: column nowrap; `, flexRowNoWrap: css` display: flex; flex-flow: row nowrap; ` } } export default function ThemeProvider({ children }: { children: React.ReactNode }) { //const darkMode = useIsDarkMode() const themeObject = theme() return {children} } const TextWrapper = styled(Text)<{ color: keyof Colors }>` color: ${({ color, theme }) => (theme as any)[color]}; ` export const TYPE = { main(props: TextProps) { return }, link(props: TextProps) { return }, black(props: TextProps) { return }, body(props: TextProps) { return }, largeHeader(props: TextProps) { return }, mediumHeader(props: TextProps) { return }, subHeader(props: TextProps) { return }, blue(props: TextProps) { return }, yellow(props: TextProps) { return }, darkGray(props: TextProps) { return }, gray(props: TextProps) { return }, italic(props: TextProps) { return }, error({ error, ...props }: { error: boolean } & TextProps) { return } } export const FixedGlobalStyle = createGlobalStyle` html, input, textarea, button { font-family: 'Inter', sans-serif; letter-spacing: -0.018em; font-display: fallback; } @supports (font-variation-settings: normal) { html, input, textarea, button { font-family: 'Inter var', sans-serif; } } html, body { margin: 0; padding: 0; } * { box-sizing: border-box; } button { user-select: none; } html { font-size: 16px; font-variant: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } ` //background-color: ${({ theme }) => theme.bg2}; export const ThemedGlobalStyle = createGlobalStyle` html { color: ${({ theme }) => theme.text1}; background: url(${BackgroundImage}) } ` /* body { min-height: 100vh; background-position: 0 -30vh; background-repeat: no-repeat; background-image: ${({ theme }) => `radial-gradient(50% 50% at 50% 50%, ${theme.primary5} 0%, ${transparentize(1, theme.primary4)} 100%)`}; } */