From b2733dbce4adfcca9c2335d9ddbe0bf0bacfe35c Mon Sep 17 00:00:00 2001 From: storywithoutend Date: Thu, 28 Sep 2023 15:06:56 +0800 Subject: [PATCH] add vanilla extract --- components/package.json | 9 +- .../src/components/atoms/Avatar/Avatar.tsx | 74 +- .../src/components/atoms/Banner/Banner.tsx | 160 ++- .../src/components/atoms/Banner/styles.css.ts | 0 components/src/components/atoms/Box/Box.tsx | 19 + components/src/components/atoms/Tag/Tag.tsx | 80 +- .../src/components/atoms/Tag/styles.css.ts | 18 + components/src/css/global.css.ts | 5 + components/src/css/layers.css.ts | 5 + components/src/css/rainbow-spinkles.css.ts | 112 ++ components/src/css/theme.css.ts | 47 + components/src/css/utils/getColorStyle.ts | 101 ++ components/src/tokens/breakpoints.ts | 11 + components/src/tokens/colors2.ts | 286 +++++ components/src/tokens/index.ts | 20 +- components/src/tokens/transition.ts | 18 + components/vite.config.ts | 4 + docs/src/pages/_app.tsx | 2 +- pnpm-lock.yaml | 1071 ++++++++++++++++- 19 files changed, 1827 insertions(+), 215 deletions(-) create mode 100644 components/src/components/atoms/Banner/styles.css.ts create mode 100644 components/src/components/atoms/Box/Box.tsx create mode 100644 components/src/components/atoms/Tag/styles.css.ts create mode 100644 components/src/css/global.css.ts create mode 100644 components/src/css/layers.css.ts create mode 100644 components/src/css/rainbow-spinkles.css.ts create mode 100644 components/src/css/theme.css.ts create mode 100644 components/src/css/utils/getColorStyle.ts create mode 100644 components/src/tokens/breakpoints.ts create mode 100644 components/src/tokens/colors2.ts create mode 100644 components/src/tokens/transition.ts diff --git a/components/package.json b/components/package.json index 337f6ec8..cf07f5ca 100644 --- a/components/package.json +++ b/components/package.json @@ -61,7 +61,13 @@ "@types/rimraf": "^3.0.2", "@types/styled-components": "^5", "@types/testing-library__jest-dom": "^5.14.1", - "@vanilla-extract/css": "1.13.0", + "@vanilla-extract/css": "^1.13.0", + "@vanilla-extract/css-utils": "^0.1.3", + "@vanilla-extract/dynamic": "^2.0.3", + "@vanilla-extract/recipes": "^0.5.0", + "@vanilla-extract/sprinkles": "^1.6.1", + "@vanilla-extract/vite-plugin": "^3.9.0", + "@vanilla-extract/private": "^1.0.3", "babel-plugin-styled-components": "^2.0.6", "deepmerge": "^4.2.2", "esbuild-darwin-arm64": "^0.14.27", @@ -69,6 +75,7 @@ "jest": "^27.3.1", "jest-styled-components": "^7.0.8", "jest-watch-typeahead": "^1.0.0", + "rainbow-sprinkles": "0.17.0", "react": "^17.0.2", "react-dom": "^17.0.2", "rimraf": "^3.0.2", diff --git a/components/src/components/atoms/Avatar/Avatar.tsx b/components/src/components/atoms/Avatar/Avatar.tsx index 58cf3257..22f82519 100644 --- a/components/src/components/atoms/Avatar/Avatar.tsx +++ b/components/src/components/atoms/Avatar/Avatar.tsx @@ -1,6 +1,8 @@ import * as React from 'react' import styled, { css } from 'styled-components' +import { rainbowSprinkles } from '@/src/css/rainbow-spinkles.css' + type NativeImgAttributes = React.ImgHTMLAttributes type Shape = 'circle' | 'square' @@ -61,41 +63,22 @@ const Container = styled.div( `, ) -const Placeholder = styled.div<{ $url?: string; $disabled: boolean }>( - ({ theme, $url, $disabled }) => css` - background: ${$url || theme.colors.gradients.blue}; - - display: flex; - align-items: center; - justify-content: center; - width: 100%; - height: 100%; - - ${$disabled && - css` - filter: grayscale(1); - `} - `, -) - -const Img = styled.img<{ $shown: boolean; $disabled: boolean }>( - ({ $shown, $disabled }) => css` - height: 100%; - width: 100%; - object-fit: cover; - display: none; - - ${$shown && - css` - display: block; - `} - - ${$disabled && - css` - filter: grayscale(1); - `} - `, -) +const placeholderStyles = ({ + disabled, + url, +}: { + disabled: boolean + url?: string +}) => + rainbowSprinkles({ + filter: disabled ? 'grayscale(1)' : undefined, + backgroundColor: url || '$blueGradient', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + width: '100%', + height: '100%', + }) export type Props = { /** Accessibility text. */ @@ -153,20 +136,27 @@ export const Avatar = ({ }, [ref, hideImg, showImg]) const isImageVisible = showImage && !!src + + const imgProps = rainbowSprinkles({ + display: isImageVisible ? 'block' : 'none', + height: '100%', + objectFit: 'cover', + width: '100%', + filter: disabled ? 'grayscale(1)' : undefined, + ...props, + }) + return ( {overlay} {!isImageVisible && ( - )} - {label} @@ -52,69 +53,90 @@ type WithoutAnchor = { type NonNullableAlert = NonNullable -const Container = styled.div<{ - $alert: NonNullableAlert - $hasAction: boolean -}>( - ({ theme, $alert, $hasAction }) => css` - position: relative; - background: ${theme.colors.backgroundPrimary}; - border: 1px solid ${theme.colors.border}; - border-radius: ${theme.radii['2xLarge']}; - padding: ${theme.space[4]}; - display: flex; - align-items: stretch; - gap: ${theme.space[4]}; - width: ${theme.space.full}; - transition: all 150ms ease-in-out; - - ${mq.sm.min( - css` - padding: ${theme.space['6']}; - gap: ${theme.space[6]}; - align-items: center; - `, - )} - - ${$hasAction && - css` - padding-right: ${theme.space[8]}; - &:hover { - transform: translateY(-1px); - background: ${theme.colors.greySurface}; - ${$alert === 'error' && - css` - background: ${theme.colors.redLight}; - `} - ${$alert === 'warning' && - css` - background: ${theme.colors.yellowLight}; - `} - } - `} - - ${$alert === 'error' && - css` - background: ${theme.colors.redSurface}; - border: 1px solid ${theme.colors.redPrimary}; - `} - - ${$alert === 'warning' && - css` - background: ${theme.colors.yellowSurface}; - border: 1px solid ${theme.colors.yellowPrimary}; - `}; - `, -) +const getColorForAlert = ( + alert: NonNullableAlert, + field: 'background' | 'border', + hover = false, +) => { + return { + error: { + background: { + default: '$redSurface', + hover: '$redLight', + }, + border: { + default: '$redPrimary', + hover: '$redPrimary', + }, + }, + warning: { + background: { + default: '$yellowSurface', + hover: '$yellowLight', + }, + border: { + default: '$yellowPrimary', + hover: '$yellowPrimary', + }, + }, + info: { + background: { + default: '$backgroundPrimary', + hover: '$greySurface', + }, + border: { + default: '$border', + hover: '$border', + }, + }, + }[alert][field][hover ? 'hover' : 'default'] +} -const Content = styled.div( - ({ theme }) => css` - flex: 1; - display: flex; - flex-direction: column; - justify-content: center; - gap: ${theme.space[1]}; - `, +const ContainerBox = React.forwardRef< + HTMLDivElement, + { + $alert: NonNullableAlert + $hasAction: boolean + } & BoxProps +>( + ( + { + $alert, + $hasAction, + ...props + }: { + $alert: NonNullableAlert + $hasAction: boolean + } & BoxProps, + ref, + ) => ( + + ), ) const IconContainer = styled.div<{ @@ -299,7 +321,7 @@ export const Banner = React.forwardRef< const _iconType = iconType || defaultIconType(alert, icon) return ( - )} - + {title && {title}} {children} - + - + ) }, ) diff --git a/components/src/components/atoms/Banner/styles.css.ts b/components/src/components/atoms/Banner/styles.css.ts new file mode 100644 index 00000000..e69de29b diff --git a/components/src/components/atoms/Box/Box.tsx b/components/src/components/atoms/Box/Box.tsx new file mode 100644 index 00000000..a6e5a939 --- /dev/null +++ b/components/src/components/atoms/Box/Box.tsx @@ -0,0 +1,19 @@ +import React, { AllHTMLAttributes, ElementType, forwardRef } from 'react' + +import { Sprinkles, rainbowSprinkles } from '../../../css/rainbow-spinkles.css' + +type HTMLProperties = Omit, 'as'> + +export type BoxProps = Sprinkles & HTMLProperties & { as?: ElementType } + +export const Box = forwardRef( + ({ as, children, ...props }, ref) => { + const Component = as || 'div' + const { className, style, otherProps } = rainbowSprinkles(props) + return ( + + {children} + + ) + }, +) diff --git a/components/src/components/atoms/Tag/Tag.tsx b/components/src/components/atoms/Tag/Tag.tsx index 18221e97..8a40b090 100644 --- a/components/src/components/atoms/Tag/Tag.tsx +++ b/components/src/components/atoms/Tag/Tag.tsx @@ -1,52 +1,10 @@ import * as React from 'react' -import styled, { css } from 'styled-components' -import { - WithColorStyle, - getColorStyle, -} from '@/src/types/withColorOrColorStyle' +import { WithColorStyle } from '@/src/types/withColorOrColorStyle' -interface ContainerProps { - $hover?: boolean - $size: 'small' | 'medium' - $colorStyle: NonNullable -} - -const Container = styled.div( - ({ theme, $hover, $size, $colorStyle }) => css` - align-items: center; - display: flex; - border-radius: ${theme.radii['full']}; - font-size: ${theme.fontSizes.small}; - line-height: ${theme.lineHeights.small}; - font-weight: ${theme.fontWeights.bold}; - width: ${theme.space['max']}; - padding: ${theme.space['0.5']} ${theme.space['2']}; - background: ${getColorStyle($colorStyle, 'background')}; - color: ${getColorStyle($colorStyle, 'text')}; - border: 1px solid ${getColorStyle($colorStyle, 'border')}; - cursor: default; - - ${$size === 'small' && - css` - font-size: ${theme.fontSizes.extraSmall}; - line-height: ${theme.lineHeights.extraSmall}; - `} +import { getColorStyle } from '../../../css/utils/getColorStyle' - ${$hover && - css` - transition-duration: ${theme.transitionDuration['150']}; - transition-property: color, border-color, background-color; - transition-timing-function: ${theme.transitionTimingFunction['inOut']}; - - &:hover, - &:active { - transform: translateY(-1px); - background-color: ${getColorStyle($colorStyle, 'hover')}; - } - `} - `, -) +import { Box } from '../Box/Box' type NativeDivProps = React.HTMLAttributes @@ -69,15 +27,35 @@ export const Tag = ({ ...props }: Props) => { return ( - {children} - + ) } diff --git a/components/src/components/atoms/Tag/styles.css.ts b/components/src/components/atoms/Tag/styles.css.ts new file mode 100644 index 00000000..fdc236f1 --- /dev/null +++ b/components/src/components/atoms/Tag/styles.css.ts @@ -0,0 +1,18 @@ +import { style } from '@vanilla-extract/css' +import { recipe } from '@vanilla-extract/recipes' + +export const variants = recipe({ + base: { + background: 'red', + }, + variants: { + size: { + small: style({ + height: '1rem', + }), + medium: style({ + height: '2rem', + }), + }, + }, +}) diff --git a/components/src/css/global.css.ts b/components/src/css/global.css.ts new file mode 100644 index 00000000..07340f08 --- /dev/null +++ b/components/src/css/global.css.ts @@ -0,0 +1,5 @@ +import { globalStyle } from '@vanilla-extract/css' + +globalStyle('*', { + background: 'red', +}) diff --git a/components/src/css/layers.css.ts b/components/src/css/layers.css.ts new file mode 100644 index 00000000..c9b783f4 --- /dev/null +++ b/components/src/css/layers.css.ts @@ -0,0 +1,5 @@ +import { layer } from '@vanilla-extract/css' + +export const resetLayer = layer('reset') +export const responsiveLayer = layer('responsive') +export const interactionLayer = layer('interaction') diff --git a/components/src/css/rainbow-spinkles.css.ts b/components/src/css/rainbow-spinkles.css.ts new file mode 100644 index 00000000..de209260 --- /dev/null +++ b/components/src/css/rainbow-spinkles.css.ts @@ -0,0 +1,112 @@ +import { createRainbowSprinkles, defineProperties } from 'rainbow-sprinkles' + +import { commonVars, modeVars } from './theme.css' + +const responsiveProperties = defineProperties({ + conditions: { + base: {}, + xs: { '@media': 'screen and (min-width: 360px)' }, + sm: { '@media': 'screen and (min-width: 640px)' }, + md: { '@media': 'screen and (min-width: 768px)' }, + lg: { '@media': 'screen and (min-width: 1024px)' }, + xl: { '@media': 'screen and (min-width: 1280px)' }, + }, + defaultCondition: 'base', + dynamicProperties: { + display: true, + flexDirection: true, + flex: true, + alignItems: true, + justifyContent: true, + gap: commonVars.space, + padding: commonVars.space, + paddingLeft: commonVars.space, + paddingRight: commonVars.space, + paddingTop: commonVars.space, + paddingBottom: commonVars.space, + height: true, + borderRadius: commonVars.radii, + borderColor: modeVars.color, + borderStyle: true, + fontFamily: commonVars.fonts, + fontSize: commonVars.fontSizes, + fontWeight: commonVars.fontWeights, + lineHeight: commonVars.lineHeights, + textAlign: true, + zIndex: true, + position: true, + top: commonVars.space, + left: commonVars.space, + right: commonVars.space, + bottom: commonVars.space, + verticalAlign: true, + margin: commonVars.space, + marginBottom: commonVars.space, + marginLeft: commonVars.space, + marginRight: commonVars.space, + marginTop: commonVars.space, + width: commonVars.space, + }, + staticProperties: { + display: ['block', 'flex', 'inline-block', 'inline-flex'], + borderWidth: { + '1x': '1px', + '2x': '2px', + '3x': '3px', + }, + }, + shorthands: { + p: ['padding'], + pl: ['paddingLeft'], + pr: ['paddingRight'], + pt: ['paddingTop'], + pb: ['paddingBottom'], + paddingX: ['paddingLeft', 'paddingRight'], + paddingY: ['paddingTop', 'paddingBottom'], + px: ['paddingLeft', 'paddingRight'], + py: ['paddingTop', 'paddingBottom'], + placeItems: ['alignItems', 'justifyContent'], + typeSize: ['fontSize', 'lineHeight'], + m: ['margin'], + mr: ['marginRight'], + ml: ['marginLeft'], + mt: ['marginTop'], + mb: ['marginBottom'], + marginX: ['marginLeft', 'marginRight'], + marginY: ['marginTop', 'marginBottom'], + mx: ['marginLeft', 'marginRight'], + my: ['marginTop', 'marginBottom'], + size: ['height', 'width'], + }, +}) + +const interactiveProperties = defineProperties({ + conditions: { + base: {}, + hover: { selector: '&:hover' }, + active: { selector: '&:active' }, + }, + defaultCondition: 'base', + dynamicProperties: { + color: modeVars.color, + backgroundColor: modeVars.color, + transform: true, + transition: true, + animation: true, + filter: true, + objectFit: true, + transitionTimingFunction: commonVars.transitionTimingFunction, + transitionDuration: commonVars.transitionDuration, + transitionProperty: true, + }, + shorthands: { + bg: ['backgroundColor'], + }, +}) + +export const rainbowSprinkles = createRainbowSprinkles( + responsiveProperties, + interactiveProperties, +) + +export type Sprinkles = Parameters[0] diff --git a/components/src/css/theme.css.ts b/components/src/css/theme.css.ts new file mode 100644 index 00000000..c31a0ee5 --- /dev/null +++ b/components/src/css/theme.css.ts @@ -0,0 +1,47 @@ +import { + createGlobalTheme, + createGlobalThemeContract, +} from '@vanilla-extract/css' + +import { colors } from '../tokens/colors2' +import { borderStyles, borderWidths, radii } from '../tokens/border' +import { space } from '../tokens/space' +import { + fontSizes, + fontWeights, + fonts, + letterSpacings, + lineHeights, +} from '../tokens/typography' +import { opacity } from '../tokens/opacity' +import { shadows } from '../tokens/shadows' +import { + transitionDuration, + transitionTimingFunction, +} from '../tokens/transition' + +const getVarName = (_value: string | null, path: string[]) => + path.join('-').replace('.', '_').replace('/', '__') + +const commonTokens = { + fonts, + fontSizes, + fontWeights, + lineHeights, + letterSpacings, + opacity, + shadows, + space, + radii, + borderWidths, + borderStyles, + transitionDuration, + transitionTimingFunction, +} +export const commonVars = createGlobalThemeContract(commonTokens, getVarName) +createGlobalTheme(':root', commonVars, commonTokens) + +const modeTokens = { color: colors.light } +export const modeVars = createGlobalThemeContract(modeTokens, getVarName) +createGlobalTheme('[data-theme="light"]', modeVars, modeTokens) +createGlobalTheme('[data-theme="dark"]', modeVars, { color: colors.dark }) diff --git a/components/src/css/utils/getColorStyle.ts b/components/src/css/utils/getColorStyle.ts new file mode 100644 index 00000000..6d579179 --- /dev/null +++ b/components/src/css/utils/getColorStyle.ts @@ -0,0 +1,101 @@ +const BASE_COLORS = [ + 'accent', + 'blue', + 'indigo', + 'purple', + 'pink', + 'red', + 'orange', + 'yellow', + 'green', + 'teal', + 'grey', +] as const + +type BaseColor = typeof BASE_COLORS[number] + +const GRADIENT_COLORS = ['blue', 'purple', 'red', 'green', 'grey'] as const + +type GradientColor = typeof GRADIENT_COLORS[number] + +const makeColorStyleMap = () => { + const primaryStyles = Object.fromEntries( + BASE_COLORS.map((color) => [ + `${color}Primary`, + { + text: `$backgroundPrimary`, + background: `$${color}Primary`, + border: 'transparent', + hover: `$${color}Bright`, + }, + ]), + ) as { + [key in `${BaseColor}Primary`]: any + } + const secondaryStyles = Object.fromEntries( + BASE_COLORS.map((color) => [ + `${color}Secondary`, + { + text: `$${color}Primary`, + background: `$${color}Surface`, + border: 'transparent', + hover: `$${color}Light`, + }, + ]), + ) as { + [key in `${BaseColor}Secondary`]: any + } + + const gradientValues = Object.fromEntries( + GRADIENT_COLORS.map((color) => [ + `${color}Gradient`, + { + text: `$backgroundPrimary`, + background: `$${color}Gradient`, + border: 'transparent', + hover: `$${color}Gradient`, + }, + ]), + ) as { + [key in `${GradientColor}Gradient`]: any + } + + const transparent: any = { + text: 'initial', + background: 'transparent', + border: 'transparent', + hover: '$greyLight', + } as const + + const disabled: any = { + text: '$greyPrimary', + background: '$greyLight', + border: '$greyLight', + hover: '$greyLight', + } as const + + const background: any = { + text: '$textPrimary', + background: '$backgroundPrimary', + border: '$border', + hover: '$backgroundSecondary', + } as const + + return { + ...primaryStyles, + ...secondaryStyles, + ...gradientValues, + transparent, + disabled, + background, + } +} + +const colorStyleMap = makeColorStyleMap() + +type ColorStyle = keyof ReturnType +type ColorStyleProperty = 'text' | 'background' | 'border' | 'hover' +export const getColorStyle = ( + colorStyle: ColorStyle, + property: ColorStyleProperty, +) => colorStyleMap[colorStyle][property] diff --git a/components/src/tokens/breakpoints.ts b/components/src/tokens/breakpoints.ts new file mode 100644 index 00000000..cd96b6a0 --- /dev/null +++ b/components/src/tokens/breakpoints.ts @@ -0,0 +1,11 @@ +export const breakpoints = { + xs: 360, + sm: 640, + md: 768, + lg: 1024, + xl: 1280, +} + +export type Breakpoint = keyof typeof breakpoints + +export const breakpointNames = Object.keys(breakpoints) as Breakpoint[] diff --git a/components/src/tokens/colors2.ts b/components/src/tokens/colors2.ts new file mode 100644 index 00000000..0976c31f --- /dev/null +++ b/components/src/tokens/colors2.ts @@ -0,0 +1,286 @@ +/** + * Color Variables + * + * All the following variables are used to generate color tokens. + * Changes made to these variables will be reflected throughout the library. + */ + +// The Mode type contains all possible theme modes. +export type Mode = 'light' | 'dark' + +const shades = [50, 100, 300, 400, 500, 750] as const + +const namedShadeMap = { + Surface: 50, + Light: 100, + Bright: 300, + Primary: 400, + Dim: 500, + Active: 750, +} as const + +// The hues object is a map of HSL colors, with optional overrides for each shade. +const hues = { + blue: [216, 100, 61, { 50: [215, 100, 97] }], + indigo: [242, 61, 58], + purple: [280, 62, 55], + pink: [331, 67, 51, { 100: [331, 64, 88] }], + red: [7, 76, 44, { 50: [0, 60, 94], 100: [360, 60, 85] }], + orange: [35, 91, 50, { 100: [36, 89, 86] }], + yellow: [47, 86, 49, { 50: [48, 100, 90], 100: [48, 100, 85] }], + green: [162, 72, 40, { 50: [157, 37, 93], 100: [157, 37, 85] }], + teal: [199, 66, 49], + grey: [ + 240, + 6, + 63, + { + 50: [0, 0, 96], + 100: [0, 0, 91], + 500: [0, 0, 35], + 750: [0, 0, 15], + }, + ], +} satisfies Record + +const backgroundColor = { + light: '0 0% 100%', + dark: '0 0% 8%', +} + +// The categories object is a map of categorised colors, which can each have their own custom values. +const categories = { + background: { + hue: 'grey', + items: { + primary: backgroundColor, + secondary: 'Surface', + }, + }, + text: { + hue: 'grey', + items: { + primary: 'Active', + secondary: 'Dim', + tertiary: 'Primary', + accent: { + light: backgroundColor.light, + dark: backgroundColor.light, + }, + }, + }, + border: { + hue: 'grey', + items: { + primary: 'Light', + }, + }, +} satisfies Record + +const gradients = { + blueGradient: + 'linear-gradient(330.4deg, #44BCF0 4.54%, #7298F8 59.2%, #A099FF 148.85%)', + greenGradient: + 'linear-gradient(90deg, rgba(68,240,127,1) 4.54%, rgba(114,248,176,1) 59.2%, rgba(153,202,255,1) 148.85%)', + redGradient: + 'linear-gradient(90deg, rgba(240,68,87,1) 4.54%, rgba(248,114,149,1) 59.2%, rgba(212,153,255,1) 148.85%)', + purpleGradient: + 'linear-gradient(323.31deg, #DE82FF -15.56%, #7F6AFF 108.43%)', + greyGradient: + 'linear-gradient(330.4deg, #DFDFDF 4.54%, #959595 59.2%, #474747 148.85%)', +} + +/** + * END COLOR VARIABLES + */ + +export type NamedShade = keyof typeof namedShadeMap +export type Shade = typeof shades[number] +export type Hue = keyof typeof hues +export type Category = keyof Categories | 'accent' +export type Gradient = keyof typeof gradients + +type HSLColor = [hue: number, saturation: number, lightness: number] + +type HueItem = [ + ...hsl: HSLColor, + overrides?: { + [key in Shade]?: HSLColor + }, +] + +type Categories = typeof categories + +type CamelCaseNested = ( + T extends object + ? { + [K in Exclude]: `${K}${Capitalize< + CamelCaseNested + >}` + }[Exclude] + : '' +) extends infer D + ? Extract + : never + +type DotNestedCategoryKeys = CamelCaseNested<{ + [item in keyof Categories]: { + [key in keyof Categories[item]['items']]: string + } & { + '': string + } +}> +type DotNestedCategories = { [K in DotNestedCategoryKeys]: string } + +type GeneratedCategories = DotNestedCategories + +type CategoryItem = { + hue: Hue + items: { + [key: string]: + | { + [key in Mode]: string + } + | NamedShade + } +} + +type WithRaw = Omit & { raw: Omit } + +type ShadeColor = { [key in Shade]: string } +type NameColor = { [key in NamedShade]: string } +type ColorItem< + TObject extends Record, + TName extends string, +> = TObject extends object + ? { + [key in Exclude as `${TName}${key}`]: string + } & { + [T in `${TName}`]: string + } + : never +type CalculatedColors = WithRaw> +type AllColors = WithRaw + +const makeColorObject = ( + mode: Mode, + name: THue, + color: ShadeColor, +) => { + if (mode === 'dark') { + color = Object.fromEntries( + Object.entries(color).map(([key], index, arr) => [ + key, + arr[arr.length - index - 1][1], + ]), + ) as ShadeColor + } + + const values = Object.fromEntries( + Object.entries(namedShadeMap).map(([key, value]) => [ + `${name}${key}`, + color[value], + ]), + ) + + return { ...values, [name]: values[`${name}Primary`] } as ColorItem< + NameColor, + THue + > +} + +const makeCSSHSL = (hsl: HSLColor) => `${hsl[0]} ${hsl[1]}% ${hsl[2]}%` + +const makeColorRange = ( + mode: Mode, + name: THue, + hue: HueItem, +) => { + const color = Object.fromEntries( + shades.map((shade) => { + if (hue[3]?.[shade]) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + return [shade, makeCSSHSL(hue[3]![shade]!)] + } + const hsl = hue.slice(0, 3) as HSLColor + hsl[2] = hsl[2] + (400 - shade) / 10 + return [shade, makeCSSHSL(hsl)] + }), + ) as ShadeColor + return { + normal: makeColorObject( + mode, + name, + Object.fromEntries( + Object.entries(color).map(([key, value]) => [key, `hsl(${value})`]), + ) as ShadeColor, + ), + raw: makeColorObject(mode, name, color), + } +} + +const makeGradients = (accent: unknown, colors: AllColors) => { + const accentGradient = gradients[accent as Gradient] || colors[accent as Hue] + const entries = Object.entries({ + ...gradients, + accent: accentGradient, + }) + return Object.fromEntries(entries) as Record +} + +const makeMode = (accent: Hue, mode: Mode) => { + const calculatedColors = Object.entries({ + ...hues, + accent: hues[accent], + }).reduce((prev, curr) => { + const [key, value] = curr + const colorRange = makeColorRange(mode, key as Hue, value) + return { + ...prev, + ...colorRange.normal, + raw: { + ...prev.raw, + ...colorRange.raw, + }, + } + }, {} as CalculatedColors) + + const allColours = Object.entries(categories).reduce((prev, curr) => { + const [category, value] = curr + for (const [name, shade] of Object.entries(value.items)) { + const itemKey = `${category}${name.replace(/^[a-z]/, (l) => + l.toUpperCase(), + )}` as DotNestedCategoryKeys + const newItem = + typeof shade === 'string' + ? calculatedColors.raw[`${value.hue}${shade as NamedShade}`] + : shade[mode] + + prev[itemKey] = `hsl(${newItem})` + prev.raw[itemKey] = newItem + + if (name === 'primary') { + const categoryKey = category as keyof typeof categories + prev[categoryKey] = `hsl(${newItem})` + prev.raw[categoryKey] = newItem + } + } + return prev + }, calculatedColors as AllColors) + + const allColoursWithRaw = { + ...allColours, + ...makeGradients(accent, allColours), + } + + delete (allColoursWithRaw as any)['raw'] + return allColoursWithRaw as Omit +} + +export const makeColors = (accent: Hue) => ({ + light: makeMode(accent, 'light'), + dark: makeMode(accent, 'dark'), +}) + +export const colors = makeColors('blue') +console.log(colors) diff --git a/components/src/tokens/index.ts b/components/src/tokens/index.ts index f52d7c6e..ce58cd23 100644 --- a/components/src/tokens/index.ts +++ b/components/src/tokens/index.ts @@ -10,25 +10,7 @@ import { letterSpacings, lineHeights, } from './typography' - -const transitionDuration = { - '75': '75ms', - '100': '100ms', - '150': '150ms', - '200': '200ms', - '300': '300ms', - '500': '500ms', - '700': '700ms', - '1000': '1000ms', -} - -const transitionTimingFunction = { - linear: 'linear', - in: 'cubic-bezier(0.4, 0, 1, 1)', - out: 'cubic-bezier(0, 0, 0.2, 1)', - inOut: 'cubic-bezier(0.42, 0, 0.58, 1)', - popIn: 'cubic-bezier(0.15, 1.15, 0.6, 1)', -} +import { transitionDuration, transitionTimingFunction } from './transition' export const breakpoints = { xs: 360, diff --git a/components/src/tokens/transition.ts b/components/src/tokens/transition.ts new file mode 100644 index 00000000..b209f88c --- /dev/null +++ b/components/src/tokens/transition.ts @@ -0,0 +1,18 @@ +export const transitionDuration = { + '75': '75ms', + '100': '100ms', + '150': '150ms', + '200': '200ms', + '300': '300ms', + '500': '500ms', + '700': '700ms', + '1000': '1000ms', +} + +export const transitionTimingFunction = { + linear: 'linear', + in: 'cubic-bezier(0.4, 0, 1, 1)', + out: 'cubic-bezier(0, 0, 0.2, 1)', + inOut: 'cubic-bezier(0.42, 0, 0.58, 1)', + popIn: 'cubic-bezier(0.15, 1.15, 0.6, 1)', +} diff --git a/components/vite.config.ts b/components/vite.config.ts index 191ea484..14bafde1 100644 --- a/components/vite.config.ts +++ b/components/vite.config.ts @@ -4,6 +4,7 @@ import dts from 'vite-plugin-dts' import tsconfigPaths from 'vite-tsconfig-paths' import svgrPlugin from 'vite-plugin-svgr' import stylelintPlugin from 'vite-plugin-stylelint' +import { vanillaExtractPlugin } from '@vanilla-extract/vite-plugin' import pkg from './package.json' import path from 'path' @@ -37,6 +38,9 @@ export default defineConfig({ ], }, plugins: [ + vanillaExtractPlugin({ + identifiers: 'short', + }), svgrPlugin({ svgrOptions: { icon: true, diff --git a/docs/src/pages/_app.tsx b/docs/src/pages/_app.tsx index f208b315..5f46c16f 100644 --- a/docs/src/pages/_app.tsx +++ b/docs/src/pages/_app.tsx @@ -6,7 +6,7 @@ import Script from 'next/script' import { ThemeProvider } from 'styled-components' import { ThorinGlobalStyles, lightTheme } from '@ensdomains/thorin' - +import '@ensdomains/thorin/dist/style.css' import { MDX } from '~/components' import { getLayout as getDocsLayout } from '~/layouts/docs' import GlobalStyle from '~/styles/globalStyles' diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 140d3fa6..b9820da2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -121,7 +121,13 @@ importers: '@types/rimraf': ^3.0.2 '@types/styled-components': ^5 '@types/testing-library__jest-dom': ^5.14.1 - '@vanilla-extract/css': 1.13.0 + '@vanilla-extract/css': ^1.13.0 + '@vanilla-extract/css-utils': ^0.1.3 + '@vanilla-extract/dynamic': ^2.0.3 + '@vanilla-extract/private': ^1.0.3 + '@vanilla-extract/recipes': ^0.5.0 + '@vanilla-extract/sprinkles': ^1.6.1 + '@vanilla-extract/vite-plugin': ^3.9.0 babel-plugin-styled-components: ^2.0.6 clsx: ^1.1.1 deepmerge: ^4.2.2 @@ -132,6 +138,7 @@ importers: jest-styled-components: ^7.0.8 jest-watch-typeahead: ^1.0.0 lodash: ^4.17.21 + rainbow-sprinkles: 0.17.0 react: ^17.0.2 react-dom: ^17.0.2 rimraf: ^3.0.2 @@ -171,6 +178,12 @@ importers: '@types/styled-components': 5.1.23 '@types/testing-library__jest-dom': 5.14.5 '@vanilla-extract/css': 1.13.0 + '@vanilla-extract/css-utils': 0.1.3 + '@vanilla-extract/dynamic': 2.0.3 + '@vanilla-extract/private': 1.0.3 + '@vanilla-extract/recipes': 0.5.0_3qusp464cmatvw2qbjjzblbe54 + '@vanilla-extract/sprinkles': 1.6.1_3qusp464cmatvw2qbjjzblbe54 + '@vanilla-extract/vite-plugin': 3.9.0_kpzh553nyvwzbphorod6becrcm babel-plugin-styled-components: 2.0.6 deepmerge: 4.2.2 esbuild-darwin-arm64: 0.14.53 @@ -178,6 +191,7 @@ importers: jest: 27.5.1_ts-node@10.9.1 jest-styled-components: 7.0.8 jest-watch-typeahead: 1.1.0_jest@27.5.1 + rainbow-sprinkles: 0.17.0_zxjdkdpiw73alatjbkr2ai5eu4 react: 17.0.2 react-dom: 17.0.2_react@17.0.2 rimraf: 3.0.2 @@ -280,6 +294,14 @@ packages: dependencies: '@jridgewell/trace-mapping': 0.3.13 + /@ampproject/remapping/2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.13 + dev: true + /@babel/cli/7.18.10_@babel+core@7.20.5: resolution: {integrity: sha512-dLvWH+ZDFAkd2jPBSghrsFBuXrREvFwjpDycXbmUoeochqKYe4zNSLEJYErpLg8dvxvZYe79/MkN461XCwpnGw==} engines: {node: '>=6.9.0'} @@ -319,6 +341,14 @@ packages: dependencies: '@babel/highlight': 7.18.6 + /@babel/code-frame/7.22.13: + resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.20 + chalk: 2.4.2 + dev: true + /@babel/compat-data/7.18.8: resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} engines: {node: '>=6.9.0'} @@ -327,6 +357,11 @@ packages: resolution: {integrity: sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==} engines: {node: '>=6.9.0'} + /@babel/compat-data/7.22.20: + resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/core/7.12.9: resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} @@ -395,6 +430,29 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core/7.22.20: + resolution: {integrity: sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-module-transforms': 7.22.20_@babel+core@7.22.20 + '@babel/helpers': 7.22.15 + '@babel/parser': 7.22.16 + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 + convert-source-map: 1.8.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/generator/7.18.10: resolution: {integrity: sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA==} engines: {node: '>=6.9.0'} @@ -412,6 +470,16 @@ packages: '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + /@babel/generator/7.22.15: + resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.19 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 + dev: true + /@babel/helper-annotate-as-pure/7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} engines: {node: '>=6.9.0'} @@ -475,6 +543,17 @@ packages: browserslist: 4.21.3 semver: 6.3.0 + /@babel/helper-compilation-targets/7.22.15: + resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.22.20 + '@babel/helper-validator-option': 7.22.15 + browserslist: 4.21.11 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + /@babel/helper-create-class-features-plugin/7.18.9_@babel+core@7.18.10: resolution: {integrity: sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==} engines: {node: '>=6.9.0'} @@ -570,6 +649,11 @@ packages: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} + /@babel/helper-environment-visitor/7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-explode-assignable-expression/7.18.6: resolution: {integrity: sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==} engines: {node: '>=6.9.0'} @@ -590,12 +674,27 @@ packages: '@babel/template': 7.18.10 '@babel/types': 7.20.5 + /@babel/helper-function-name/7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.22.19 + dev: true + /@babel/helper-hoist-variables/7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.20.5 + /@babel/helper-hoist-variables/7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.19 + dev: true + /@babel/helper-member-expression-to-functions/7.18.9: resolution: {integrity: sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==} engines: {node: '>=6.9.0'} @@ -608,6 +707,13 @@ packages: dependencies: '@babel/types': 7.20.5 + /@babel/helper-module-imports/7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.19 + dev: true + /@babel/helper-module-transforms/7.18.0: resolution: {integrity: sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==} engines: {node: '>=6.9.0'} @@ -653,6 +759,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helper-module-transforms/7.22.20_@babel+core@7.22.20: + resolution: {integrity: sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.20 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + /@babel/helper-optimise-call-expression/7.18.6: resolution: {integrity: sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==} engines: {node: '>=6.9.0'} @@ -670,6 +790,11 @@ packages: resolution: {integrity: sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==} engines: {node: '>=6.9.0'} + /@babel/helper-plugin-utils/7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-remap-async-to-generator/7.18.9_@babel+core@7.18.10: resolution: {integrity: sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==} engines: {node: '>=6.9.0'} @@ -729,6 +854,13 @@ packages: dependencies: '@babel/types': 7.20.5 + /@babel/helper-simple-access/7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.19 + dev: true + /@babel/helper-skip-transparent-expression-wrappers/7.18.9: resolution: {integrity: sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==} engines: {node: '>=6.9.0'} @@ -747,6 +879,13 @@ packages: dependencies: '@babel/types': 7.20.5 + /@babel/helper-split-export-declaration/7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.19 + dev: true + /@babel/helper-string-parser/7.18.10: resolution: {integrity: sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==} engines: {node: '>=6.9.0'} @@ -755,6 +894,11 @@ packages: resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} engines: {node: '>=6.9.0'} + /@babel/helper-string-parser/7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-identifier/7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} @@ -767,10 +911,20 @@ packages: resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier/7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-validator-option/7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-option/7.22.15: + resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==} + engines: {node: '>=6.9.0'} + dev: true + /@babel/helper-wrap-function/7.18.10: resolution: {integrity: sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ==} engines: {node: '>=6.9.0'} @@ -813,6 +967,17 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers/7.22.15: + resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.22.20 + '@babel/types': 7.22.19 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/highlight/7.16.10: resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} engines: {node: '>=6.9.0'} @@ -830,6 +995,15 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight/7.22.20: + resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + /@babel/parser/7.18.10: resolution: {integrity: sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg==} engines: {node: '>=6.0.0'} @@ -845,6 +1019,14 @@ packages: dependencies: '@babel/types': 7.20.5 + /@babel/parser/7.22.16: + resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.19 + dev: true + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==} engines: {node: '>=6.9.0'} @@ -1682,6 +1864,16 @@ packages: '@babel/core': 7.20.5 '@babel/helper-plugin-utils': 7.18.9 + /@babel/plugin-syntax-typescript/7.22.5_@babel+core@7.22.20: + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + /@babel/plugin-transform-arrow-functions/7.18.6_@babel+core@7.18.10: resolution: {integrity: sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==} engines: {node: '>=6.9.0'} @@ -2816,6 +3008,15 @@ packages: '@babel/parser': 7.20.5 '@babel/types': 7.20.5 + /@babel/template/7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 + dev: true + /@babel/traverse/7.18.10: resolution: {integrity: sha512-J7ycxg0/K9XCtLyHf0cz2DqDihonJeIo+z+HEdRe9YuT8TY4A66i+Ab2/xZCEW7Ro60bPCBBfqqboHSamoV3+g==} engines: {node: '>=6.9.0'} @@ -2868,6 +3069,24 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse/7.22.20: + resolution: {integrity: sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.13 + '@babel/generator': 7.22.15 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.16 + '@babel/types': 7.22.19 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + /@babel/types/7.18.10: resolution: {integrity: sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ==} engines: {node: '>=6.9.0'} @@ -2884,6 +3103,15 @@ packages: '@babel/helper-validator-identifier': 7.19.1 to-fast-properties: 2.0.0 + /@babel/types/7.22.19: + resolution: {integrity: sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + /@base2/pretty-print-object/1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} dev: false @@ -2916,46 +3144,442 @@ packages: '@emmetio/scanner': 1.0.0 dev: true - /@emmetio/scanner/1.0.0: - resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} + /@emmetio/scanner/1.0.0: + resolution: {integrity: sha512-8HqW8EVqjnCmWXVpqAOZf+EGESdkR27odcMMMGefgKXtar00SoYNSryGv//TELI4T3QFsECo78p+0lmalk/CFA==} + dev: true + + /@emotion/hash/0.8.0: + resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} + dev: false + + /@emotion/hash/0.9.1: + resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + dev: true + + /@emotion/is-prop-valid/0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + dependencies: + '@emotion/memoize': 0.7.4 + + /@emotion/memoize/0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + + /@emotion/stylis/0.8.5: + resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + + /@emotion/unitless/0.7.5: + resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + + /@esbuild/android-arm/0.15.18: + resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm/0.17.6: + resolution: {integrity: sha512-bSC9YVUjADDy1gae8RrioINU6e1lCkg3VGVwm0QQ2E1CWcC4gnMce9+B6RpxuSsrsXsk1yojn7sp1fnG8erE2g==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm/0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.17.6: + resolution: {integrity: sha512-YnYSCceN/dUzUr5kdtUzB+wZprCafuD89Hs0Aqv9QSdwhYQybhXTaSTcrl6X/aWThn1a/j0eEpUBGOE7269REg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64/0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.17.6: + resolution: {integrity: sha512-MVcYcgSO7pfu/x34uX9u2QIZHmXAB7dEiLQC5bBl5Ryqtpj9lT2sg3gNDEsrPEmimSJW2FXIaxqSQ501YLDsZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64/0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.17.6: + resolution: {integrity: sha512-bsDRvlbKMQMt6Wl08nHtFz++yoZHsyTOxnjfB2Q95gato+Yi4WnRl13oC2/PJJA9yLCoRv9gqT/EYX0/zDsyMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64/0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.17.6: + resolution: {integrity: sha512-xh2A5oPrYRfMFz74QXIQTQo8uA+hYzGWJFoeTE8EvoZGHb+idyV4ATaukaUvnnxJiauhs/fPx3vYhU4wiGfosg==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64/0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.17.6: + resolution: {integrity: sha512-EnUwjRc1inT4ccZh4pB3v1cIhohE2S4YXlt1OvI7sw/+pD+dIE4smwekZlEPIwY6PhU6oDWwITrQQm5S2/iZgg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64/0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.17.6: + resolution: {integrity: sha512-Uh3HLWGzH6FwpviUcLMKPCbZUAFzv67Wj5MTwK6jn89b576SR2IbEp+tqUHTr8DIl0iDmBAf51MVaP7pw6PY5Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64/0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.17.6: + resolution: {integrity: sha512-7YdGiurNt7lqO0Bf/U9/arrPWPqdPqcV6JCZda4LZgEn+PTQ5SMEI4MGR52Bfn3+d6bNEGcWFzlIxiQdS48YUw==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm/0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.17.6: + resolution: {integrity: sha512-bUR58IFOMJX523aDVozswnlp5yry7+0cRLCXDsxnUeQYJik1DukMY+apBsLOZJblpH+K7ox7YrKrHmJoWqVR9w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64/0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.17.6: + resolution: {integrity: sha512-ujp8uoQCM9FRcbDfkqECoARsLnLfCUhKARTP56TFPog8ie9JG83D5GVKjQ6yVrEVdMie1djH86fm98eY3quQkQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32/0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.15.18: + resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.17.6: + resolution: {integrity: sha512-y2NX1+X/Nt+izj9bLoiaYB9YXT/LoaQFYvCkVD77G/4F+/yuVXYCWz4SE9yr5CBMbOxOfBcy/xFL4LlOeNlzYQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64/0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.17.6: + resolution: {integrity: sha512-09AXKB1HDOzXD+j3FdXCiL/MWmZP0Ex9eR8DLMBVcHorrWJxWmY8Nms2Nm41iRM64WVx7bA/JVHMv081iP2kUA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el/0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.17.6: + resolution: {integrity: sha512-AmLhMzkM8JuqTIOhxnX4ubh0XWJIznEynRnZAVdA2mMKE6FAfwT2TWKTwdqMG+qEaeyDPtfNoZRpJbD4ZBv0Tg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64/0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.17.6: + resolution: {integrity: sha512-Y4Ri62PfavhLQhFbqucysHOmRamlTVK10zPWlqjNbj2XMea+BOs4w6ASKwQwAiqf9ZqcY9Ab7NOU4wIgpxwoSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64/0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.17.6: + resolution: {integrity: sha512-SPUiz4fDbnNEm3JSdUW8pBJ/vkop3M1YwZAVwvdwlFLoJwKEZ9L98l3tzeyMzq27CyepDQ3Qgoba44StgbiN5Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x/0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.17.6: + resolution: {integrity: sha512-a3yHLmOodHrzuNgdpB7peFGPx1iJ2x6m+uDvhP2CKdr2CwOaqEFMeSqYAHU7hG+RjCq8r2NFujcd/YsEsFgTGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64/0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.17.6: + resolution: {integrity: sha512-EanJqcU/4uZIBreTrnbnre2DXgXSa+Gjap7ifRfllpmyAU7YMvaXmljdArptTHmjrkkKm9BK6GH5D5Yo+p6y5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64/0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.17.6: + resolution: {integrity: sha512-xaxeSunhQRsTNGFanoOkkLtnmMn5QbA0qBhNet/XLVsc+OVkpIWPHcr3zTW2gxVU5YOHFbIHR9ODuaUdNza2Vw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64/0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.17.6: + resolution: {integrity: sha512-gnMnMPg5pfMkZvhHee21KbKdc6W3GR8/JuE0Da1kjwpK6oiFU3nqfHuVPgUX2rsOx9N2SadSQTIYV1CIjYG+xw==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64/0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64/0.17.6: + resolution: {integrity: sha512-G95n7vP1UnGJPsVdKXllAJPtqjMvFYbN20e8RK8LVLhlTiSOH1sd7+Gt7rm70xiG+I5tM58nYgwWrLs6I1jHqg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@emotion/hash/0.8.0: - resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==} - dev: false - - /@emotion/hash/0.9.1: - resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} + /@esbuild/win32-arm64/0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /@emotion/is-prop-valid/0.8.8: - resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} - dependencies: - '@emotion/memoize': 0.7.4 - - /@emotion/memoize/0.7.4: - resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} - - /@emotion/stylis/0.8.5: - resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} + /@esbuild/win32-ia32/0.17.6: + resolution: {integrity: sha512-96yEFzLhq5bv9jJo5JhTs1gI+1cKQ83cUpyxHuGqXVwQtY5Eq54ZEsKs8veKtiKwlrNimtckHEkj4mRh4pPjsg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true - /@emotion/unitless/0.7.5: - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} + /@esbuild/win32-ia32/0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true - /@esbuild/android-arm/0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} + /@esbuild/win32-x64/0.17.6: + resolution: {integrity: sha512-n6d8MOyUrNp6G4VSpRcgjs5xj4A91svJSaiwLIDWVWEsZtpN5FA9NlBbZHDmAJc2e8e6SF4tkBD3HAvPF+7igA==} engines: {node: '>=12'} - cpu: [arm] - os: [android] + cpu: [x64] + os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/linux-loong64/0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} + /@esbuild/win32-x64/0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} - cpu: [loong64] - os: [linux] + cpu: [x64] + os: [win32] requiresBuild: true dev: true optional: true @@ -3257,12 +3881,16 @@ packages: dependencies: '@jridgewell/set-array': 1.1.1 '@jridgewell/sourcemap-codec': 1.4.11 - '@jridgewell/trace-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.19 /@jridgewell/resolve-uri/3.0.5: resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} engines: {node: '>=6.0.0'} + /@jridgewell/resolve-uri/3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + /@jridgewell/set-array/1.1.1: resolution: {integrity: sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==} engines: {node: '>=6.0.0'} @@ -3277,12 +3905,21 @@ packages: /@jridgewell/sourcemap-codec/1.4.11: resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + /@jridgewell/sourcemap-codec/1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@jridgewell/trace-mapping/0.3.13: resolution: {integrity: sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w==} dependencies: '@jridgewell/resolve-uri': 3.0.5 '@jridgewell/sourcemap-codec': 1.4.11 + /@jridgewell/trace-mapping/0.3.19: + resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/trace-mapping/0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -4974,6 +5611,14 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@vanilla-extract/babel-plugin-debug-ids/1.0.3: + resolution: {integrity: sha512-vm4jYu1xhSa6ofQ9AhIpR3DkAp4c+eoR1Rpm8/TQI4DmWbmGbOjYRcqV0aWsfaIlNhN4kFuxFMKBNN9oG6iRzA==} + dependencies: + '@babel/core': 7.22.20 + transitivePeerDependencies: + - supports-color + dev: true + /@vanilla-extract/babel-plugin/1.1.7: resolution: {integrity: sha512-nTCOb1N/u1FUxACxV/jvpLm4xchiCdEHTUZrxCWjYOrIxqkfgpJXE4T7q/1VyEje/M929DFBUaD+YkPzaqGMzA==} deprecated: The features of this plugin are now built-in to all vanilla-extract bundler integrations — making this plugin no longer required. For more information about test environment integrations, see https://vanilla-extract.style/documentation/test-environments/ @@ -4989,6 +5634,10 @@ packages: resolution: {integrity: sha512-qoxIu5E/UhJtoKsPL1JaU9nhTN0Xl5zYV0pScOgsvc3JN46TvTTt0L3GV8x3PQpZP7x3elw8BsC9czYbhJy9Gg==} dev: false + /@vanilla-extract/css-utils/0.1.3: + resolution: {integrity: sha512-PZAcHROlgtCUGI2y0JntdNwvPwCNyeVnkQu6KTYKdmxBbK3w72XJUmLFYapfaFfgami4I9CTLnrJTPdtmS3gpw==} + dev: true + /@vanilla-extract/css/1.13.0: resolution: {integrity: sha512-JFFBXhnJrPlGqHBabagXqo5ghXw9mtV270ycIGyLDZG8NAK5eRwAYkMowAxuzK7wZSm67GnETWYB7b0AUmyttg==} dependencies: @@ -5021,6 +5670,12 @@ packages: outdent: 0.8.0 dev: false + /@vanilla-extract/dynamic/2.0.3: + resolution: {integrity: sha512-Rglfw2gXAYiBzAQ4jgUG7rBgE2c88e/zcG27ZVoIqMHVq56wf2C1katGMm1yFMNBgzqM7oBNYzz4YOMzznydkg==} + dependencies: + '@vanilla-extract/private': 1.0.3 + dev: true + /@vanilla-extract/integration/5.0.0: resolution: {integrity: sha512-HwglsIxGYtV4IXFfyQ6GzZLFoaWaW+QkNx8UhXbgsCWUoPqpSbioukCOA+SuSuzsIcEZ3hkD0Y5ixITQNtnzjQ==} dependencies: @@ -5033,9 +5688,44 @@ packages: outdent: 0.8.0 dev: false + /@vanilla-extract/integration/6.2.2_@types+node@16.11.6: + resolution: {integrity: sha512-gV3qPFjFap1+IrPeuFy+tEZOq7l7ifJf1ik/kluDWhPr1ffsFG9puq1/jjJ4rod1BIC79Q5ZWPNvBInHyxfCew==} + dependencies: + '@babel/core': 7.22.20 + '@babel/plugin-syntax-typescript': 7.22.5_@babel+core@7.22.20 + '@vanilla-extract/babel-plugin-debug-ids': 1.0.3 + '@vanilla-extract/css': 1.13.0 + esbuild: 0.17.6 + eval: 0.1.8 + find-up: 5.0.0 + javascript-stringify: 2.1.0 + lodash: 4.17.21 + mlly: 1.4.2 + outdent: 0.8.0 + vite: 4.4.9_@types+node@16.11.6 + vite-node: 0.28.5_@types+node@16.11.6 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /@vanilla-extract/private/1.0.3: resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} + /@vanilla-extract/recipes/0.5.0_3qusp464cmatvw2qbjjzblbe54: + resolution: {integrity: sha512-NfdZ8XyqCDG2RsO3FmYPALDMKg5045dRD97NbBb0Fog3LMDVXZxYgDOct5FAWob8U6W4GbhVpRZt1X9hNnH6fA==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + dependencies: + '@vanilla-extract/css': 1.13.0 + dev: true + /@vanilla-extract/sprinkles/1.4.1_@vanilla-extract+css@1.7.3: resolution: {integrity: sha512-aW6CfMMToX4a+baLuVxwcT0FSACjX3xrNt8wdi/3LLRlLAfhyue8OK7kJxhcYNZfydBeWTP59aRy8p5FUTIeew==} peerDependencies: @@ -5044,6 +5734,36 @@ packages: '@vanilla-extract/css': 1.7.3 dev: false + /@vanilla-extract/sprinkles/1.6.1_3qusp464cmatvw2qbjjzblbe54: + resolution: {integrity: sha512-N/RGKwGAAidBupZ436RpuweRQHEFGU+mvAqBo8PRMAjJEmHoPDttV8RObaMLrJHWLqvX+XUMinHUnD0hFRQISw==} + peerDependencies: + '@vanilla-extract/css': ^1.0.0 + dependencies: + '@vanilla-extract/css': 1.13.0 + dev: true + + /@vanilla-extract/vite-plugin/3.9.0_kpzh553nyvwzbphorod6becrcm: + resolution: {integrity: sha512-Q2HYAyEJ93Uy7GHQPPiP8SXwPMHGpd4d0YnrIQqB0YZccYbGJR/WFIln9Dmbzx2pdngQUoOfhwEg6kJF8sQrog==} + peerDependencies: + vite: ^2.2.3 || ^3.0.0 || ^4.0.3 + dependencies: + '@vanilla-extract/integration': 6.2.2_@types+node@16.11.6 + outdent: 0.8.0 + postcss: 8.4.19 + postcss-load-config: 3.1.4_v776zzvn44o7tpgzieipaairwm + vite: 3.2.5_@types+node@16.11.6 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + - ts-node + dev: true + /@vanilla-extract/webpack-plugin/2.1.12_webpack@5.58.2: resolution: {integrity: sha512-8mAbIDEh9r7a5cgb3wcILzuhEbGNddV4/qvwogOlxhoGrP4deUKJHEtPURDviWZ+x/FzFZtZ3glWU7WD8+WN8A==} peerDependencies: @@ -5209,6 +5929,12 @@ packages: hasBin: true dev: true + /acorn/8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + /acorn/8.5.0: resolution: {integrity: sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==} engines: {node: '>=0.4.0'} @@ -5844,6 +6570,17 @@ packages: node-releases: 2.0.5 picocolors: 1.0.0 + /browserslist/4.21.11: + resolution: {integrity: sha512-xn1UXOKUz7DjdGlg9RrUr0GGiWzI97UQJnugHtH0OLDfJB7jMgoIkYvRIEO1l9EeEERVqeqLYOcFBW9ldjypbQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001538 + electron-to-chromium: 1.4.528 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13_browserslist@4.21.11 + dev: true + /browserslist/4.21.3: resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5896,6 +6633,11 @@ packages: engines: {node: '>= 0.8'} dev: false + /cac/6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /call-bind/1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} dependencies: @@ -5955,6 +6697,10 @@ packages: resolution: {integrity: sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==} dev: false + /caniuse-lite/1.0.30001538: + resolution: {integrity: sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==} + dev: true + /capital-case/1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: @@ -6988,6 +7734,10 @@ packages: /electron-to-chromium/1.4.210: resolution: {integrity: sha512-kSiX4tuyZijV7Cz0MWVmGT8K2siqaOA4Z66K5dCttPPRh0HicOcOAEj1KlC8O8J1aOS/1M8rGofOzksLKaHWcQ==} + /electron-to-chromium/1.4.528: + resolution: {integrity: sha512-UdREXMXzLkREF4jA8t89FQjA8WHI6ssP38PMY4/4KhXFQbtImnghh4GkCgrtiZwLKUKVD2iTVXvDVQjfomEQuA==} + dev: true + /emittery/0.10.2: resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==} engines: {node: '>=12'} @@ -7346,6 +8096,66 @@ packages: esbuild-windows-arm64: 0.15.18 dev: true + /esbuild/0.17.6: + resolution: {integrity: sha512-TKFRp9TxrJDdRWfSsSERKEovm6v30iHnrjlcGhLBOtReE28Yp1VSBRfO3GTaOFMoxsNerx4TjrhzSuma9ha83Q==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.17.6 + '@esbuild/android-arm64': 0.17.6 + '@esbuild/android-x64': 0.17.6 + '@esbuild/darwin-arm64': 0.17.6 + '@esbuild/darwin-x64': 0.17.6 + '@esbuild/freebsd-arm64': 0.17.6 + '@esbuild/freebsd-x64': 0.17.6 + '@esbuild/linux-arm': 0.17.6 + '@esbuild/linux-arm64': 0.17.6 + '@esbuild/linux-ia32': 0.17.6 + '@esbuild/linux-loong64': 0.17.6 + '@esbuild/linux-mips64el': 0.17.6 + '@esbuild/linux-ppc64': 0.17.6 + '@esbuild/linux-riscv64': 0.17.6 + '@esbuild/linux-s390x': 0.17.6 + '@esbuild/linux-x64': 0.17.6 + '@esbuild/netbsd-x64': 0.17.6 + '@esbuild/openbsd-x64': 0.17.6 + '@esbuild/sunos-x64': 0.17.6 + '@esbuild/win32-arm64': 0.17.6 + '@esbuild/win32-ia32': 0.17.6 + '@esbuild/win32-x64': 0.17.6 + dev: true + + /esbuild/0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -7832,6 +8642,14 @@ packages: require-like: 0.1.2 dev: false + /eval/0.1.8: + resolution: {integrity: sha512-EzV94NYKoO09GLXGjXj9JIlXijVck4ONSr5wiCWDvhsvj5jxSrzTmRU/9C1DyB6uToszLs8aifA6NQ7lEQdvFw==} + engines: {node: '>= 0.8'} + dependencies: + '@types/node': 16.11.6 + require-like: 0.1.2 + dev: true + /eventemitter3/4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} dev: false @@ -8089,7 +8907,6 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: false /flat-cache/3.0.4: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} @@ -9118,7 +9935,6 @@ packages: /javascript-stringify/2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} - dev: false /jest-changed-files/27.5.1: resolution: {integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==} @@ -9803,10 +10619,20 @@ packages: engines: {node: '>=6'} hasBin: true + /json5/2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + /jsonc-parser/2.3.1: resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} dev: true + /jsonc-parser/3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + /jsonfile/4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -9888,6 +10714,11 @@ packages: engines: {node: '>=10'} dev: true + /lilconfig/2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + /lines-and-columns/1.1.6: resolution: {integrity: sha512-8ZmlJFVK9iCmtLz19HpSsR8HaAMWBT284VMNednLwlIMDP2hJDCIhUp0IZ2xUcZ+Ob6BM0VvCSJwzASDM45NLQ==} @@ -9965,7 +10796,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: false /lodash.camelcase/4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -10036,6 +10866,12 @@ packages: yallist: 2.1.2 dev: false + /lru-cache/5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + /lru-cache/6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} @@ -10312,6 +11148,15 @@ packages: hasBin: true dev: true + /mlly/1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.10.0 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.0 + dev: true + /ms/2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} @@ -10364,6 +11209,12 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /nanoid/3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + /nanospinner/0.3.1: resolution: {integrity: sha512-esx373MR7OP0y7sz97FgcCDH+Mx67GW+1IuBgivf2o2MkASybBM1lL0bkrCAWTz3DHf3XaAovMisefiIFJMkzQ==} dependencies: @@ -10467,6 +11318,10 @@ packages: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} dev: true + /node-releases/2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + /node-releases/2.0.5: resolution: {integrity: sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==} @@ -10697,7 +11552,6 @@ packages: engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: false /p-map/4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} @@ -10813,6 +11667,10 @@ packages: engines: {node: '>=8'} dev: true + /pathe/1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + /pend/1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} dev: true @@ -10850,6 +11708,14 @@ packages: find-up: 5.0.0 dev: false + /pkg-types/1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + /playroom/0.28.1_sfoxds7t5ydpegc3knd667wn6m: resolution: {integrity: sha512-sXcAUYY6boeOA9hkBFGwemob0peltYhUyPozhNh+yd1Fj8wYr873oe93T33pYrBUfweow9pzRD0VoHggF6SAtw==} hasBin: true @@ -11021,6 +11887,24 @@ packages: postcss: 8.4.19 dev: true + /postcss-load-config/3.1.4_v776zzvn44o7tpgzieipaairwm: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.19 + ts-node: 10.9.1_bt5sflnlgjdtoyp24iylol6xsy + yaml: 1.10.2 + dev: true + /postcss-media-query-parser/0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} dev: true @@ -11347,6 +12231,15 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 + /postcss/8.4.30: + resolution: {integrity: sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /prelude-ls/1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} @@ -11531,6 +12424,16 @@ packages: engines: {node: '>=8'} dev: true + /rainbow-sprinkles/0.17.0_zxjdkdpiw73alatjbkr2ai5eu4: + resolution: {integrity: sha512-ok3NrylQ0szvJtuBYaB/w09L9zOvvqcSQrvycT2A5XJxQNvwvkeADvTqQWGOQ3b6MkO8UmYccBPt8g8vVvxM9A==} + peerDependencies: + '@vanilla-extract/css': ^1 + '@vanilla-extract/dynamic': ^2 + dependencies: + '@vanilla-extract/css': 1.13.0 + '@vanilla-extract/dynamic': 2.0.3 + dev: true + /randombytes/2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -11893,7 +12796,6 @@ packages: /require-like/0.1.2: resolution: {integrity: sha512-oyrU88skkMtDdauHDuKVrgR+zuItqr6/c//FXzvmxRGMexSDc6hNvJInGW3LL46n+8b50RykrvwSUIIQH2LQ5A==} - dev: false /requires-port/1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -11989,6 +12891,14 @@ packages: fsevents: 2.3.2 dev: true + /rollup/3.29.3: + resolution: {integrity: sha512-T7du6Hum8jOkSWetjRgbwpM6Sy0nECYrYRSmZjayFcOddtKJWU4d17AC3HNUk7HRuqy4p+G7aEZclSHytqUmEg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /rtl-css-js/1.16.0: resolution: {integrity: sha512-Oc7PnzwIEU4M0K1J4h/7qUUaljXhQ0kCObRsZjxs2HjkpKsnoTMvSmvJ4sqgJZd0zBoEfAyTdnK/jMIYvrjySQ==} dependencies: @@ -12106,6 +13016,11 @@ packages: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + /semver/6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + /semver/7.0.0: resolution: {integrity: sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==} hasBin: true @@ -12329,6 +13244,13 @@ packages: buffer-from: 1.1.2 source-map: 0.6.1 + /source-map-support/0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map/0.5.6: resolution: {integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==} engines: {node: '>=0.10.0'} @@ -13292,6 +14214,10 @@ packages: engines: {node: '>=8'} dev: false + /ufo/1.3.0: + resolution: {integrity: sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==} + dev: true + /unbox-primitive/1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} dependencies: @@ -13419,6 +14345,17 @@ packages: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} dev: true + /update-browserslist-db/1.0.13_browserslist@4.21.11: + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.11 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + /update-browserslist-db/1.0.5_browserslist@4.21.3: resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} hasBin: true @@ -13558,6 +14495,30 @@ packages: unist-util-stringify-position: 2.0.3 vfile-message: 2.0.4 + /vite-node/0.28.5_@types+node@16.11.6: + resolution: {integrity: sha512-LmXb9saMGlrMZbXTvOveJKwMTBTNUH66c8rJnQ0ZPNX+myPEol64+szRzXtV5ORb0Hb/91yq+/D3oERoyAt6LA==} + engines: {node: '>=v14.16.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + source-map: 0.6.1 + source-map-support: 0.5.21 + vite: 4.4.9_@types+node@16.11.6 + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vite-plugin-babel-macros/1.0.6_vite@3.2.5: resolution: {integrity: sha512-7cCT8jtu5UjpE46pH7RyVltWw5FbhDAtQliZ6QGqRNR5RUZKdAsB0CDjuF+VBoDpnl0KuESPu22SoNqXRYYWyQ==} engines: {node: '>=16'} @@ -13667,6 +14628,42 @@ packages: fsevents: 2.3.2 dev: true + /vite/4.4.9_@types+node@16.11.6: + resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 16.11.6 + esbuild: 0.18.20 + postcss: 8.4.30 + rollup: 3.29.3 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vscode-css-languageservice/5.4.2: resolution: {integrity: sha512-DT7+7vfdT2HDNjDoXWtYJ0lVDdeDEdbMNdK4PKqUl2MS8g7PWt7J5G9B6k9lYox8nOfhCEjLnoNC3UKHHCR1lg==} dependencies: @@ -14037,6 +15034,10 @@ packages: resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} dev: false + /yallist/3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + /yallist/4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}