326 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			326 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
// stitches.config.ts
 | 
						||
import type Stitches from '@stitches/react';
 | 
						||
import { createStitches } from '@stitches/react';
 | 
						||
import {
 | 
						||
  gray,
 | 
						||
  blue,
 | 
						||
  red,
 | 
						||
  green,
 | 
						||
  plum,
 | 
						||
  slate,
 | 
						||
  mauve,
 | 
						||
  pink,
 | 
						||
  yellow,
 | 
						||
  purple,
 | 
						||
  grayDark,
 | 
						||
  blueDark,
 | 
						||
  redDark,
 | 
						||
  greenDark,
 | 
						||
  plumDark,
 | 
						||
  slateDark,
 | 
						||
  mauveDark,
 | 
						||
  pinkDark,
 | 
						||
  yellowDark,
 | 
						||
  purpleDark,
 | 
						||
} from '@radix-ui/colors';
 | 
						||
 | 
						||
export const {
 | 
						||
  styled,
 | 
						||
  css,
 | 
						||
  globalCss,
 | 
						||
  keyframes,
 | 
						||
  getCssText,
 | 
						||
  theme,
 | 
						||
  createTheme,
 | 
						||
  config,
 | 
						||
} = createStitches({
 | 
						||
  theme: {
 | 
						||
    colors: {
 | 
						||
      ...gray,
 | 
						||
      ...blue,
 | 
						||
      ...red,
 | 
						||
      ...green,
 | 
						||
      ...plum,
 | 
						||
      ...slate,
 | 
						||
      ...mauve,
 | 
						||
      ...pink,
 | 
						||
      ...yellow,
 | 
						||
      ...purple,
 | 
						||
      background: "$gray1",
 | 
						||
      text: "$gray12",
 | 
						||
      primary: "$plum",
 | 
						||
      white: "white",
 | 
						||
      black: "black",
 | 
						||
      'deep': 'rgb(248, 248, 248)'
 | 
						||
    },
 | 
						||
    fonts: {
 | 
						||
      body: 'Work Sans, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif',
 | 
						||
      heading: 'Work Sans, sans-serif',
 | 
						||
      monospace: 'Roboto Mono, monospace',
 | 
						||
    },
 | 
						||
    fontSizes: {
 | 
						||
      xs: "0.6875rem",
 | 
						||
      sm: "0.875rem",
 | 
						||
      md: "1rem",
 | 
						||
      lg: "1.125rem",
 | 
						||
      xl: "1.25rem",
 | 
						||
      "2xl": "1.5rem",
 | 
						||
      "3xl": "1.875rem",
 | 
						||
      "4xl": "2.25rem",
 | 
						||
      "5xl": "3rem",
 | 
						||
      "6xl": "3.75rem",
 | 
						||
      "7xl": "4.5rem",
 | 
						||
      "8xl": "6rem",
 | 
						||
      "9xl": "8rem",
 | 
						||
      default: '$md'
 | 
						||
    },
 | 
						||
    space: {
 | 
						||
      px: "1px",
 | 
						||
      0.5: "0.125rem",
 | 
						||
      1: "0.25rem",
 | 
						||
      1.5: "0.375rem",
 | 
						||
      2: "0.5rem",
 | 
						||
      2.5: "0.625rem",
 | 
						||
      3: "0.75rem",
 | 
						||
      3.5: "0.875rem",
 | 
						||
      4: "1rem",
 | 
						||
      5: "1.25rem",
 | 
						||
      6: "1.5rem",
 | 
						||
      7: "1.75rem",
 | 
						||
      8: "2rem",
 | 
						||
      9: "2.25rem",
 | 
						||
      10: "2.5rem",
 | 
						||
      12: "3rem",
 | 
						||
      14: "3.5rem",
 | 
						||
      16: "4rem",
 | 
						||
      20: "5rem",
 | 
						||
      24: "6rem",
 | 
						||
      28: "7rem",
 | 
						||
      32: "8rem",
 | 
						||
      36: "9rem",
 | 
						||
      40: "10rem",
 | 
						||
      44: "11rem",
 | 
						||
      48: "12rem",
 | 
						||
      52: "13rem",
 | 
						||
      56: "14rem",
 | 
						||
      60: "15rem",
 | 
						||
      64: "16rem",
 | 
						||
      72: "18rem",
 | 
						||
      80: "20rem",
 | 
						||
      96: "24rem",
 | 
						||
      "widePlus": '2048px',
 | 
						||
      "wide": '1536px',
 | 
						||
      "layoutPlus": '1260px',
 | 
						||
      "layout": '1024px',
 | 
						||
      "copyUltra": '980px',
 | 
						||
      "copyPlus": '768px',
 | 
						||
      "copy": '680px',
 | 
						||
      "narrowPlus": '600px',
 | 
						||
      "narrow": '512px',
 | 
						||
      xs: "20rem",
 | 
						||
      sm: "24rem",
 | 
						||
      md: "28rem",
 | 
						||
      lg: "32rem",
 | 
						||
      xl: "36rem",
 | 
						||
      "2xl": "42rem",
 | 
						||
      "3xl": "48rem",
 | 
						||
      "4xl": "56rem",
 | 
						||
      "5xl": "64rem",
 | 
						||
      "6xl": "72rem",
 | 
						||
      "7xl": "80rem",
 | 
						||
      "8xl": "90rem",
 | 
						||
    },
 | 
						||
    sizes: {
 | 
						||
      px: "1px",
 | 
						||
      0.5: "0.125rem",
 | 
						||
      1: "0.25rem",
 | 
						||
      1.5: "0.375rem",
 | 
						||
      2: "0.5rem",
 | 
						||
      2.5: "0.625rem",
 | 
						||
      3: "0.75rem",
 | 
						||
      3.5: "0.875rem",
 | 
						||
      4: "1rem",
 | 
						||
      5: "1.25rem",
 | 
						||
      6: "1.5rem",
 | 
						||
      7: "1.75rem",
 | 
						||
      8: "2rem",
 | 
						||
      9: "2.25rem",
 | 
						||
      10: "2.5rem",
 | 
						||
      12: "3rem",
 | 
						||
      14: "3.5rem",
 | 
						||
      16: "4rem",
 | 
						||
      20: "5rem",
 | 
						||
      24: "6rem",
 | 
						||
      28: "7rem",
 | 
						||
      32: "8rem",
 | 
						||
      36: "9rem",
 | 
						||
      40: "10rem",
 | 
						||
      44: "11rem",
 | 
						||
      48: "12rem",
 | 
						||
      52: "13rem",
 | 
						||
      56: "14rem",
 | 
						||
      60: "15rem",
 | 
						||
      64: "16rem",
 | 
						||
      72: "18rem",
 | 
						||
      80: "20rem",
 | 
						||
      96: "24rem",
 | 
						||
      max: "max-content",
 | 
						||
      min: "min-content",
 | 
						||
      full: "100%",
 | 
						||
      "3xs": "14rem",
 | 
						||
      "2xs": "16rem",
 | 
						||
      xs: "20rem",
 | 
						||
      sm: "24rem",
 | 
						||
      md: "28rem",
 | 
						||
      lg: "32rem",
 | 
						||
      xl: "36rem",
 | 
						||
      "2xl": "42rem",
 | 
						||
      "3xl": "48rem",
 | 
						||
      "4xl": "56rem",
 | 
						||
      "5xl": "64rem",
 | 
						||
      "6xl": "72rem",
 | 
						||
      "7xl": "80rem",
 | 
						||
      "8xl": "90rem",
 | 
						||
    },
 | 
						||
    radii: {
 | 
						||
      none: "0",
 | 
						||
      sm: "0.2rem",
 | 
						||
      base: "0.25rem",
 | 
						||
      md: "0.375rem",
 | 
						||
      lg: "0.5rem",
 | 
						||
      xl: "0.75rem",
 | 
						||
      "2xl": "1rem",
 | 
						||
      "3xl": "1.5rem",
 | 
						||
      full: "9999px",
 | 
						||
    },
 | 
						||
    fontWeights: {
 | 
						||
      body: 400,
 | 
						||
      heading: 700,
 | 
						||
      bold: 700,
 | 
						||
    },
 | 
						||
    lineHeights: {
 | 
						||
      one: 1,
 | 
						||
      body: 1.5,
 | 
						||
      heading: 0.85,
 | 
						||
    },
 | 
						||
    letterSpacings: {},
 | 
						||
    borderWidths: {},
 | 
						||
    borderStyles: {},
 | 
						||
    shadows: {},
 | 
						||
    zIndices: {},
 | 
						||
    transitions: {},
 | 
						||
  },
 | 
						||
  media: {
 | 
						||
    sm: "(min-width: 30em)",
 | 
						||
    md: "(min-width: 48em)",
 | 
						||
    lg: "(min-width: 62em)",
 | 
						||
    xl: "(min-width: 80em)",
 | 
						||
    "2xl": "(min-width: 96em)",
 | 
						||
    hover: '(any-hover: hover)',
 | 
						||
    dark: '(prefers-color-scheme: dark)',
 | 
						||
    light: '(prefers-color-scheme: light)',
 | 
						||
  },
 | 
						||
  utils: {
 | 
						||
    // Abbreviated margin properties
 | 
						||
    m: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'margin'>) => ({
 | 
						||
      margin: value,
 | 
						||
    }),
 | 
						||
    mt: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'marginTop'>) => ({
 | 
						||
      marginTop: value,
 | 
						||
    }),
 | 
						||
    mr: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'marginRight'>) => ({
 | 
						||
      marginRight: value,
 | 
						||
    }),
 | 
						||
    mb: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'marginBottom'>) => ({
 | 
						||
      marginBottom: value,
 | 
						||
    }),
 | 
						||
    ml: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'marginLeft'>) => ({
 | 
						||
      marginLeft: value,
 | 
						||
    }),
 | 
						||
    mx: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'marginLeft' | 'marginRight'>) => ({
 | 
						||
      marginLeft: value,
 | 
						||
      marginRight: value,
 | 
						||
    }),
 | 
						||
    my: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'marginTop' | 'marginBottom'>) => ({
 | 
						||
      marginTop: value,
 | 
						||
      marginBottom: value,
 | 
						||
    }),
 | 
						||
    // Abbreviated margin properties
 | 
						||
    p: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'padding'>) => ({
 | 
						||
      padding: value,
 | 
						||
    }),
 | 
						||
    pt: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'paddingTop'>) => ({
 | 
						||
      paddingTop: value,
 | 
						||
    }),
 | 
						||
    pr: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'paddingRight'>) => ({
 | 
						||
      paddingRight: value,
 | 
						||
    }),
 | 
						||
    pb: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'paddingBottom'>) => ({
 | 
						||
      paddingBottom: value,
 | 
						||
    }),
 | 
						||
    pl: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'paddingLeft'>) => ({
 | 
						||
      paddingLeft: value,
 | 
						||
    }),
 | 
						||
    px: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'paddingLeft' | 'paddingRight'>) => ({
 | 
						||
      paddingLeft: value,
 | 
						||
      paddingRight: value,
 | 
						||
    }),
 | 
						||
    py: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'paddingTop' | 'paddingBottom'>) => ({
 | 
						||
      paddingTop: value,
 | 
						||
      paddingBottom: value,
 | 
						||
    }),
 | 
						||
 | 
						||
    // A property for applying width/height together
 | 
						||
    size: (value: Stitches.ScaleValue<'space'> | Stitches.PropertyValue<'width' | 'height'>) => ({
 | 
						||
      width: value,
 | 
						||
      height: value,
 | 
						||
    }),
 | 
						||
    // color: (value: Stitches.PropertyValue<'color'> | Stitches.PropertyValue<'width' | 'height'> => ({
 | 
						||
    //   color: value
 | 
						||
    // }),
 | 
						||
 | 
						||
    // A property to apply linear gradient
 | 
						||
    linearGradient: (value: Stitches.ScaleValue<'space'>) => ({
 | 
						||
      backgroundImage: `linear-gradient(${value})`,
 | 
						||
    }),
 | 
						||
 | 
						||
    // An abbreviated property for border-radius
 | 
						||
    br: (value: Stitches.ScaleValue<'space'>) => ({
 | 
						||
      borderRadius: value,
 | 
						||
    }),
 | 
						||
  },
 | 
						||
 | 
						||
});
 | 
						||
 | 
						||
export const darkTheme = createTheme('dark', {
 | 
						||
  colors: {
 | 
						||
    ...grayDark,
 | 
						||
    ...blueDark,
 | 
						||
    ...redDark,
 | 
						||
    ...greenDark,
 | 
						||
    ...plumDark,
 | 
						||
    ...slateDark,
 | 
						||
    ...mauveDark,
 | 
						||
    ...pinkDark,
 | 
						||
    ...yellowDark,
 | 
						||
    ...purpleDark,
 | 
						||
    deep: 'rgb(10, 10, 10)'
 | 
						||
  },
 | 
						||
});
 | 
						||
 | 
						||
export const globalStyles = globalCss({
 | 
						||
  // body: { backgroundColor: '$background', color: '$text', fontFamily: 'Helvetica' },
 | 
						||
  'html, body': {
 | 
						||
    backgroundColor: '$gray1',
 | 
						||
    color: '$gray12',
 | 
						||
    fontFamily: '$body',
 | 
						||
    fontSize: '$md',
 | 
						||
    '-webkit-font-smoothing': 'antialiased',
 | 
						||
    '-moz-osx-font-smoothing': 'grayscale'
 | 
						||
  },
 | 
						||
  'a': {
 | 
						||
    color: 'inherit',
 | 
						||
    textDecoration: 'none'
 | 
						||
  }
 | 
						||
});
 |