diff --git a/package.json b/package.json
index 96cef39c7f..faca265fba 100644
--- a/package.json
+++ b/package.json
@@ -52,19 +52,19 @@
]
},
"dependencies": {
- "@babel/cli": "7.17.10",
- "@babel/core": "7.13.10",
- "@babel/preset-typescript": "^7.13.0",
+ "@babel/cli": "7.20.7",
+ "@babel/core": "7.20.12",
+ "@babel/preset-typescript": "^7.18.6",
"@codecademy/eslint-config": "8.0.0",
"@codecademy/prettier-config": "^0.2.0",
"@codecademy/tsconfig": "^0.2.0",
- "@emotion/babel-plugin": "^11.3.0",
+ "@emotion/babel-plugin": "^11.10.5",
"@emotion/jest": "^11.3.0",
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
"@nrwl/cli": "^14.5.2",
- "@nrwl/nx-cloud": "^14.3.0",
"@nrwl/jest": "^14.5.2",
+ "@nrwl/nx-cloud": "^14.3.0",
"@nrwl/react": "^14.5.2",
"@svgr/cli": "5.5.0",
"@testing-library/dom": "^8.11.1",
@@ -84,7 +84,7 @@
"@typescript-eslint/parser": "^5.15.0",
"babel-jest": "28.1",
"babel-plugin-macros": "3.0.1",
- "babel-preset-codecademy": "6.0.1-alpha.8dfef4.0",
+ "babel-preset-codecademy": "7.0.0",
"component-test-setup": "^0.3.1",
"conventional-changelog-cli": "^2.0.34",
"conventional-changelog-conventionalcommits": "^4.3.0",
diff --git a/packages/gamut-icons/package.json b/packages/gamut-icons/package.json
index ac2fcdf3f8..25cf3366f7 100644
--- a/packages/gamut-icons/package.json
+++ b/packages/gamut-icons/package.json
@@ -37,6 +37,6 @@
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
"lodash": "^4.17.5",
- "react": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0"
}
}
diff --git a/packages/gamut-illustrations/package.json b/packages/gamut-illustrations/package.json
index d36a13f918..b57176dc80 100644
--- a/packages/gamut-illustrations/package.json
+++ b/packages/gamut-illustrations/package.json
@@ -22,8 +22,8 @@
"peerDependencies": {
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
- "react": ">=17.0.2",
- "react-dom": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0",
+ "react-dom": "^17.0.2 || ^18.2.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/gamut-illustrations/src/__tests__/gamut-illustrations.test.tsx b/packages/gamut-illustrations/src/__tests__/gamut-illustrations.test.tsx
index 3e281c20e3..00266532d2 100644
--- a/packages/gamut-illustrations/src/__tests__/gamut-illustrations.test.tsx
+++ b/packages/gamut-illustrations/src/__tests__/gamut-illustrations.test.tsx
@@ -3,10 +3,10 @@ import { render } from '@testing-library/react';
import * as illustrations from '..';
describe('illustrations', () => {
- for (const [name, Illustration] of Object.entries(illustrations)) {
- if (name.startsWith('_')) continue;
- it(`${name} renders`, () => {
+ it.each(Object.entries(illustrations))(
+ '%s renders',
+ (_name, Illustration) => {
render();
- });
- }
+ }
+ );
});
diff --git a/packages/gamut-labs/package.json b/packages/gamut-labs/package.json
index 804cac9bf7..c118238431 100644
--- a/packages/gamut-labs/package.json
+++ b/packages/gamut-labs/package.json
@@ -21,8 +21,8 @@
"peerDependencies": {
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
- "react": ">=17.0.2",
- "react-dom": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0",
+ "react-dom": "^17.0.2 || ^18.2.0"
},
"dependencies": {
"@codecademy/gamut": "51.7.3",
@@ -32,9 +32,8 @@
"@codecademy/gamut-styles": "14.2.5",
"@codecademy/tracking": "1.0.4",
"@codecademy/variance": "0.20.5",
- "@loadable/component": "^5.15.2",
"classnames": "^2.2.5",
- "framer-motion": "^4.1.17",
+ "framer-motion": "^6.5.1",
"freezeframe": "^5.0.2",
"intersection-observer": "^0.12.0",
"lodash": "^4.17.5",
@@ -53,7 +52,6 @@
"@testing-library/react": "^12.1.2",
"@testing-library/react-hooks": "^7.0.2",
"@testing-library/user-event": "^13.5.0",
- "@types/loadable__component": "^5.13.4",
"@types/pluralize": "0.0.29"
},
"scripts": {
diff --git a/packages/gamut-labs/src/AppBar/AppBarSection.tsx b/packages/gamut-labs/src/AppBar/AppBarSection.tsx
index 50d85d3756..7534607ddc 100644
--- a/packages/gamut-labs/src/AppBar/AppBarSection.tsx
+++ b/packages/gamut-labs/src/AppBar/AppBarSection.tsx
@@ -1,16 +1,17 @@
+import { WithChildrenProp } from '@codecademy/gamut';
import cx from 'classnames';
import * as React from 'react';
// eslint-disable-next-line gamut/no-css-standalone
import styles from './styles/index.module.scss';
-export type AppBarSectionProps = {
+export interface AppBarSectionProps extends WithChildrenProp {
/**
* Position of the the section within the AppBar.
*/
position?: 'left' | 'center' | 'right';
className?: string;
-};
+}
export const AppBarSection: React.FC = ({
position,
diff --git a/packages/gamut-labs/src/AppBar/index.tsx b/packages/gamut-labs/src/AppBar/index.tsx
index 165a4f41ff..c74d3ddf85 100644
--- a/packages/gamut-labs/src/AppBar/index.tsx
+++ b/packages/gamut-labs/src/AppBar/index.tsx
@@ -1,17 +1,17 @@
-import { ContentContainer } from '@codecademy/gamut';
+import { ContentContainer, WithChildrenProp } from '@codecademy/gamut';
import cx from 'classnames';
import * as React from 'react';
// eslint-disable-next-line gamut/no-css-standalone
import styles from './styles/index.module.scss';
-export type AppBarProps = {
+export interface AppBarProps extends WithChildrenProp {
className?: string;
/**
* Whether the container should be larger than the default content size.
*/
wide?: boolean;
-};
+}
export const AppBar: React.FC = ({
wide,
diff --git a/packages/gamut-labs/src/AppHeader/shared.tsx b/packages/gamut-labs/src/AppHeader/shared.tsx
index df5795fd97..f61b2f08d7 100644
--- a/packages/gamut-labs/src/AppHeader/shared.tsx
+++ b/packages/gamut-labs/src/AppHeader/shared.tsx
@@ -1,4 +1,10 @@
-import { Anchor, FlexBox, LayoutGrid, Text } from '@codecademy/gamut';
+import {
+ Anchor,
+ FlexBox,
+ LayoutGrid,
+ Text,
+ WithChildrenProp,
+} from '@codecademy/gamut';
import { ArrowChevronDownFilledIcon } from '@codecademy/gamut-icons';
import { css, pxRem, states } from '@codecademy/gamut-styles';
import styled from '@emotion/styled';
@@ -7,9 +13,9 @@ import * as React from 'react';
export const appHeaderMobileBreakpoint = 'lg' as const;
-export type AnimatedHeaderZoneProps = {
+export interface AnimatedHeaderZoneProps extends WithChildrenProp {
visible?: boolean;
-};
+}
const animatedPopoverVariants: Variants = {
enter: { opacity: 1, transition: { duration: 0.2 } },
diff --git a/packages/gamut-labs/src/DropdownButton/index.tsx b/packages/gamut-labs/src/DropdownButton/index.tsx
index fc7282bee0..93d3d36ca8 100644
--- a/packages/gamut-labs/src/DropdownButton/index.tsx
+++ b/packages/gamut-labs/src/DropdownButton/index.tsx
@@ -4,6 +4,7 @@ import {
IconButton,
Popover,
StrokeButton,
+ WithChildrenProp,
} from '@codecademy/gamut';
import {
ArrowChevronDownFilledIcon,
@@ -30,14 +31,14 @@ const HorizontalKebabIcon = styled(MiniKebabMenuIcon)(
})
);
-export type DropdownButtonProps = {
+export interface DropdownButtonProps extends WithChildrenProp {
buttonType?: 'fill' | 'stroke' | 'kebab' | 'horizontalKebab';
dropdownItems: DropdownItem[];
align?: 'left' | 'right';
onClick?: (event: React.MouseEvent) => void;
verticalOffset?: number;
horizontalOffset?: number;
-};
+}
export const DropdownButton: React.FC = ({
buttonType = 'fill',
diff --git a/packages/gamut-labs/src/GlobalFooter/FooterLinks.tsx b/packages/gamut-labs/src/GlobalFooter/FooterLinks.tsx
index ec7c0cb2d5..4d18608ddb 100644
--- a/packages/gamut-labs/src/GlobalFooter/FooterLinks.tsx
+++ b/packages/gamut-labs/src/GlobalFooter/FooterLinks.tsx
@@ -37,7 +37,7 @@ export const FooterLinkItemWithAnchor: React.FC<
}
> = ({ trackingTarget, footerOnClick, ...anchorProps }) => {
const anchorOnClick = useCallback(
- (event) => {
+ (event: React.MouseEvent) => {
footerOnClick({ event, target: trackingTarget });
},
[footerOnClick, trackingTarget]
diff --git a/packages/gamut-labs/src/GlobalHeader/types.tsx b/packages/gamut-labs/src/GlobalHeader/types.tsx
index 8792411d4d..451d53dd31 100644
--- a/packages/gamut-labs/src/GlobalHeader/types.tsx
+++ b/packages/gamut-labs/src/GlobalHeader/types.tsx
@@ -1,3 +1,4 @@
+import { WithChildrenProp } from '@codecademy/gamut';
import { ReactNode } from 'react';
import {
@@ -9,7 +10,7 @@ import { AppHeaderNotificationSettings } from '../Notifications/types';
type RenderProfile = { desktop: () => ReactNode; mobile: () => ReactNode };
-type BaseHeader = {
+interface BaseHeader extends WithChildrenProp {
/** A method to be called on click/activating a header item */
action: AppHeaderClickHandler;
/** A method to be called only on click/activating a *link* header item */
@@ -17,7 +18,7 @@ type BaseHeader = {
className?: string;
hidePricing?: boolean;
search: AppHeaderSearch;
-};
+}
export type User = {
avatar: string;
diff --git a/packages/gamut-labs/src/GlobalPage/index.tsx b/packages/gamut-labs/src/GlobalPage/index.tsx
index 7a729e59d0..9e92ceb316 100644
--- a/packages/gamut-labs/src/GlobalPage/index.tsx
+++ b/packages/gamut-labs/src/GlobalPage/index.tsx
@@ -2,6 +2,7 @@ import {
AppWrapper,
SkipToContent,
SkipToContentTarget,
+ WithChildrenProp,
} from '@codecademy/gamut';
import { Background } from '@codecademy/gamut-styles';
import { ComponentProps, forwardRef } from 'react';
@@ -21,7 +22,7 @@ export type GlobalPageBackgroundColor =
| 'paleYellow'
| 'white';
-export type GlobalPageProps = {
+export interface GlobalPageProps extends WithChildrenProp {
backgroundColor?: GlobalPageBackgroundColor;
/**
@@ -48,7 +49,7 @@ export type GlobalPageProps = {
* Custom element ID to link to by the SkipToContent control, if not a default one at the beginning of the page.
*/
skipToContentId?: string;
-};
+}
const defaultSkipToContentId = 'page-skip-to-content-target';
diff --git a/packages/gamut-labs/src/HeaderHeightArea/index.tsx b/packages/gamut-labs/src/HeaderHeightArea/index.tsx
index 9e2330ad37..fe5a44cd2f 100644
--- a/packages/gamut-labs/src/HeaderHeightArea/index.tsx
+++ b/packages/gamut-labs/src/HeaderHeightArea/index.tsx
@@ -1,4 +1,4 @@
-import { Box } from '@codecademy/gamut';
+import { Box, WithChildrenProp } from '@codecademy/gamut';
import { system, transitionConcat } from '@codecademy/gamut-styles';
import { ResponsiveProp } from '@codecademy/variance';
import { useTheme } from '@emotion/react';
@@ -28,11 +28,11 @@ const HeaderHeightAreaBase = styled(Box)(
})
);
-export type HeaderHeightAreaProps = {
+export interface HeaderHeightAreaProps extends WithChildrenProp {
as?: React.ElementType;
display: ResponsiveProp<'none' | 'block'>;
title?: string;
-};
+}
export const HeaderHeightArea: React.FC = ({
as,
diff --git a/packages/gamut-labs/src/HorizontalScrollMenu/index.tsx b/packages/gamut-labs/src/HorizontalScrollMenu/index.tsx
index 054b8b5216..b5137b788f 100644
--- a/packages/gamut-labs/src/HorizontalScrollMenu/index.tsx
+++ b/packages/gamut-labs/src/HorizontalScrollMenu/index.tsx
@@ -1,6 +1,6 @@
import 'intersection-observer';
-import { Box, FlexBox } from '@codecademy/gamut';
+import { Box, FlexBox, WithChildrenProp } from '@codecademy/gamut';
import styled from '@emotion/styled';
import { Children, useEffect, useMemo, useRef } from 'react';
import * as React from 'react';
@@ -19,7 +19,7 @@ const ScrollItemWrapper = styled(Box)`
}
`;
-export interface HorizontalScrollMenuProps {
+export interface HorizontalScrollMenuProps extends WithChildrenProp {
className?: string;
}
diff --git a/packages/gamut-labs/src/Interstitial/index.tsx b/packages/gamut-labs/src/Interstitial/index.tsx
index 2f307389cc..3f944e32b3 100644
--- a/packages/gamut-labs/src/Interstitial/index.tsx
+++ b/packages/gamut-labs/src/Interstitial/index.tsx
@@ -1,9 +1,10 @@
+import { WithChildrenProp } from '@codecademy/gamut';
import { colors } from '@codecademy/gamut-styles';
import styled from '@emotion/styled';
import { useEffect, useRef, useState } from 'react';
import * as React from 'react';
-export type InterstitialProps = {
+export interface InterstitialProps extends WithChildrenProp {
/** If provided, these buttons will render below the title and children in a column. */
buttons?: React.ReactNode[];
className?: string;
@@ -13,7 +14,7 @@ export type InterstitialProps = {
focus?: boolean;
/** h1 title for the interstitial */
title: string;
-};
+}
const InterstitialWrapper = styled.div`
align-items: center;
diff --git a/packages/gamut-labs/src/LandingPage/CTA.tsx b/packages/gamut-labs/src/LandingPage/CTA.tsx
index 857bd7f4ee..71b2302c63 100644
--- a/packages/gamut-labs/src/LandingPage/CTA.tsx
+++ b/packages/gamut-labs/src/LandingPage/CTA.tsx
@@ -1,11 +1,11 @@
-import { CTAButton, FillButton } from '@codecademy/gamut';
+import { ButtonProps, CTAButton, FillButton } from '@codecademy/gamut';
import * as React from 'react';
-export type CTAProps = {
+export interface CTAProps extends Pick {
href: string;
onClick?: React.MouseEventHandler;
buttonType?: 'cta' | 'fill';
-};
+}
export const CTA: React.FC = ({
buttonType = 'cta',
diff --git a/packages/gamut-labs/src/LandingPage/Feature.tsx b/packages/gamut-labs/src/LandingPage/Feature.tsx
index d02a67418a..5ac4db6766 100644
--- a/packages/gamut-labs/src/LandingPage/Feature.tsx
+++ b/packages/gamut-labs/src/LandingPage/Feature.tsx
@@ -1,4 +1,4 @@
-import { Box, Markdown, Text } from '@codecademy/gamut';
+import { Box, Markdown, Text, WithChildrenProp } from '@codecademy/gamut';
import { mediaQueries } from '@codecademy/gamut-styles';
import styled from '@emotion/styled';
import * as React from 'react';
@@ -26,7 +26,7 @@ export const FeaturedIcon: React.FC = ({ src, alt }) => (
);
-export const FeaturedStat: React.FC = ({ children }) => (
+export const FeaturedStat: React.FC = ({ children }) => (
(
);
-export type FeaturedTitleProps = {
+export interface FeaturedTitleProps extends WithChildrenProp {
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
-};
+}
export const FeaturedTitle: React.FC = ({
as,
children,
@@ -80,9 +80,11 @@ const FeatureBlock = styled.div`
}
}
`;
-export type FeatureProps = {
+
+export interface FeatureProps extends WithChildrenProp {
testId?: string;
-};
+}
+
export const Feature: React.FC = ({ testId, children }) => (
{children}
);
diff --git a/packages/gamut-labs/src/LandingPage/PageFeatures.tsx b/packages/gamut-labs/src/LandingPage/PageFeatures.tsx
index 8887803520..38b6e34aaa 100644
--- a/packages/gamut-labs/src/LandingPage/PageFeatures.tsx
+++ b/packages/gamut-labs/src/LandingPage/PageFeatures.tsx
@@ -4,6 +4,7 @@ import {
ColumnProps,
FlexBox,
LayoutGrid,
+ WithChildrenProp,
} from '@codecademy/gamut';
import { ReactNode } from 'react';
import * as React from 'react';
@@ -21,7 +22,7 @@ import {
import { Title } from './Title';
import { BaseProps } from './types';
-export type PageFeaturesProps = BaseProps & {
+export interface PageFeaturesProps extends BaseProps, WithChildrenProp {
maxCols?: 1 | 2 | 3 | 4;
featuresMedia?: 'image' | 'icon' | 'stat';
features: {
@@ -32,7 +33,7 @@ export type PageFeaturesProps = BaseProps & {
statText?: string;
testId?: string;
}[];
-};
+}
const rowRenderEach = (
items: PageFeaturesProps['features'],
diff --git a/packages/gamut-labs/src/LandingPage/Title.tsx b/packages/gamut-labs/src/LandingPage/Title.tsx
index f6fb15c711..c7beaf357b 100644
--- a/packages/gamut-labs/src/LandingPage/Title.tsx
+++ b/packages/gamut-labs/src/LandingPage/Title.tsx
@@ -1,9 +1,9 @@
-import { Text } from '@codecademy/gamut';
+import { Text, WithChildrenProp } from '@codecademy/gamut';
import * as React from 'react';
-export type TitleProps = {
+export interface TitleProps extends WithChildrenProp {
isPageHeading?: boolean;
-};
+}
const titleProps = {
heading: {
diff --git a/packages/gamut-labs/src/LayoutMenu/LayoutMenu.tsx b/packages/gamut-labs/src/LayoutMenu/LayoutMenu.tsx
index 00aa11952a..2052c2bd16 100644
--- a/packages/gamut-labs/src/LayoutMenu/LayoutMenu.tsx
+++ b/packages/gamut-labs/src/LayoutMenu/LayoutMenu.tsx
@@ -1,4 +1,10 @@
-import { Box, Flyout, Logo, StrokeButton } from '@codecademy/gamut';
+import {
+ Box,
+ Flyout,
+ Logo,
+ StrokeButton,
+ WithChildrenProp,
+} from '@codecademy/gamut';
import { variant } from '@codecademy/gamut-styles';
import styled from '@emotion/styled';
import { useState } from 'react';
@@ -7,7 +13,7 @@ import * as React from 'react';
import { AccordionMenu, Section, SectionItem } from './AccordionMenu';
import { LayoutMenuSection } from './LayoutMenuSection';
-export type LayoutMenuProps = {
+export interface LayoutMenuProps extends WithChildrenProp {
/**
* Accessibility label for the mobile Flyout's close button.
*/
@@ -40,7 +46,7 @@ export type LayoutMenuProps = {
* Set fixed height for menu with overflow
*/
menuHeight?: 'sm' | 'md' | 'lg';
-};
+}
const StyleBox = styled(Box)(
variant({
diff --git a/packages/gamut-labs/src/LayoutMenu/SectionItemLink.tsx b/packages/gamut-labs/src/LayoutMenu/SectionItemLink.tsx
index 70476d51f3..d67eb4d10c 100644
--- a/packages/gamut-labs/src/LayoutMenu/SectionItemLink.tsx
+++ b/packages/gamut-labs/src/LayoutMenu/SectionItemLink.tsx
@@ -1,10 +1,10 @@
-import { Anchor } from '@codecademy/gamut';
+import { Anchor, WithChildrenProp } from '@codecademy/gamut';
import * as React from 'react';
-export type SectionItemLinkProps = {
+export interface SectionItemLinkProps extends WithChildrenProp {
onClick: (event: React.MouseEvent) => void;
href: string;
-};
+}
export const SectionItemLink: React.FC = ({
onClick,
diff --git a/packages/gamut-labs/src/LayoutMenu/SelectedSectionItem.tsx b/packages/gamut-labs/src/LayoutMenu/SelectedSectionItem.tsx
index 37a98e1833..bf2339473d 100644
--- a/packages/gamut-labs/src/LayoutMenu/SelectedSectionItem.tsx
+++ b/packages/gamut-labs/src/LayoutMenu/SelectedSectionItem.tsx
@@ -1,7 +1,9 @@
-import { Box, Text } from '@codecademy/gamut';
+import { Box, Text, WithChildrenProp } from '@codecademy/gamut';
import * as React from 'react';
-export const SelectedSectionItem: React.FC = ({ children }) => {
+export const SelectedSectionItem: React.FC = ({
+ children,
+}) => {
return (
{children}
diff --git a/packages/gamut-labs/src/LayoutMenuVariant/LayoutMenu.tsx b/packages/gamut-labs/src/LayoutMenuVariant/LayoutMenu.tsx
index 599e9e272f..b350081669 100644
--- a/packages/gamut-labs/src/LayoutMenuVariant/LayoutMenu.tsx
+++ b/packages/gamut-labs/src/LayoutMenuVariant/LayoutMenu.tsx
@@ -1,4 +1,10 @@
-import { Box, Flyout, Logo, StrokeButton } from '@codecademy/gamut';
+import {
+ Box,
+ Flyout,
+ Logo,
+ StrokeButton,
+ WithChildrenProp,
+} from '@codecademy/gamut';
import { variant } from '@codecademy/gamut-styles';
import styled from '@emotion/styled';
import React, { useState } from 'react';
@@ -6,7 +12,7 @@ import React, { useState } from 'react';
import { AccordionMenu, Section, SectionItem } from './AccordionMenu';
import { LayoutMenuSection } from './LayoutMenuSection';
-export type LayoutMenuProps = {
+export interface LayoutMenuProps extends WithChildrenProp {
/**
* Accessibility label for the mobile Flyout's close button.
*/
@@ -35,7 +41,7 @@ export type LayoutMenuProps = {
* Set fixed height for menu with overflow
*/
menuHeight?: 'sm' | 'md' | 'lg';
-};
+}
const StyleBox = styled(Box)(
variant({
diff --git a/packages/gamut-labs/src/LayoutMenuVariant/SectionItemLink.tsx b/packages/gamut-labs/src/LayoutMenuVariant/SectionItemLink.tsx
index 3c53bc0bda..1363600754 100644
--- a/packages/gamut-labs/src/LayoutMenuVariant/SectionItemLink.tsx
+++ b/packages/gamut-labs/src/LayoutMenuVariant/SectionItemLink.tsx
@@ -1,10 +1,10 @@
-import { Anchor } from '@codecademy/gamut';
+import { Anchor, WithChildrenProp } from '@codecademy/gamut';
import React from 'react';
-export type SectionItemLinkProps = {
+export interface SectionItemLinkProps extends WithChildrenProp {
onClick: (event: React.MouseEvent) => void;
href: string;
-};
+}
export const SectionItemLink: React.FC = ({
onClick,
diff --git a/packages/gamut-labs/src/ListSection/index.tsx b/packages/gamut-labs/src/ListSection/index.tsx
index 93fbb27f22..ead9ee946e 100644
--- a/packages/gamut-labs/src/ListSection/index.tsx
+++ b/packages/gamut-labs/src/ListSection/index.tsx
@@ -1,3 +1,4 @@
+import { WithChildrenProp } from '@codecademy/gamut';
import { theme } from '@codecademy/gamut-styles';
import styled from '@emotion/styled';
import { Children, useState } from 'react';
@@ -5,7 +6,7 @@ import * as React from 'react';
import { PageSection, SectionButton } from '..';
-export type ListSectionProps = {
+export interface ListSectionProps extends WithChildrenProp {
title: string;
headerButton?: SectionButton;
headerSecondaryButton?: SectionButton;
@@ -22,7 +23,7 @@ export type ListSectionProps = {
* This is usually used for things like metrics tracking.
*/
onShowAllOrLessClick?: (showAll: boolean) => void;
-};
+}
const UnstyledUnorderedList = styled.ul`
list-style: none;
diff --git a/packages/gamut-labs/src/PageAlerts/PageAlertsProvider.tsx b/packages/gamut-labs/src/PageAlerts/PageAlertsProvider.tsx
index 0f1bca1ea4..98696b73c2 100644
--- a/packages/gamut-labs/src/PageAlerts/PageAlertsProvider.tsx
+++ b/packages/gamut-labs/src/PageAlerts/PageAlertsProvider.tsx
@@ -1,3 +1,4 @@
+import { WithChildrenProp } from '@codecademy/gamut';
import { noop } from 'lodash/fp';
import { useCallback, useContext, useState } from 'react';
import * as React from 'react';
@@ -18,7 +19,9 @@ export const PageAlertsContext = React.createContext({
closeAlert: noop,
});
-export const PageAlertsProvider: React.FC = ({ children }) => {
+export const PageAlertsProvider: React.FC = ({
+ children,
+}) => {
const [alerts, setAlerts] = useState([]);
const addAlert = useCallback((newAlert: PageAlert) => {
diff --git a/packages/gamut-labs/src/PageSection/index.tsx b/packages/gamut-labs/src/PageSection/index.tsx
index 59ce392fc5..e012d4bf5a 100644
--- a/packages/gamut-labs/src/PageSection/index.tsx
+++ b/packages/gamut-labs/src/PageSection/index.tsx
@@ -1,4 +1,10 @@
-import { Box, FlexBox, Text, TextButton } from '@codecademy/gamut';
+import {
+ Box,
+ FlexBox,
+ Text,
+ TextButton,
+ WithChildrenProp,
+} from '@codecademy/gamut';
import { AriaAttributes, ReactNode } from 'react';
import * as React from 'react';
@@ -16,12 +22,12 @@ function isSectionButtonATextButton(
return (button as TextButtonMinimumProps).text !== undefined;
}
-export type PageSectionProps = {
+export interface PageSectionProps extends WithChildrenProp {
title: string;
headerButton?: SectionButton;
headerSecondaryButton?: SectionButton;
footerButton?: SectionButton;
-};
+}
export const PageSection: React.FC = ({
title,
diff --git a/packages/gamut-labs/src/PausableImage/__tests__/PausableImage.test.tsx b/packages/gamut-labs/src/PausableImage/__tests__/PausableImage.test.tsx
index d1cb29ffdd..685938757d 100644
--- a/packages/gamut-labs/src/PausableImage/__tests__/PausableImage.test.tsx
+++ b/packages/gamut-labs/src/PausableImage/__tests__/PausableImage.test.tsx
@@ -1,9 +1,8 @@
import { setupRtl } from '@codecademy/gamut-tests';
+import { waitFor } from '@testing-library/react';
import { PausableImage } from '..';
-jest.mock('@loadable/component', () => () => () => 'pausable');
-
const renderView = setupRtl(PausableImage);
const createImg = (url: string) => ({
@@ -12,12 +11,15 @@ const createImg = (url: string) => ({
});
describe('PausableImage', () => {
- it('renders a pausable image when the URL ends with .gif', () => {
+ it('renders a pausable image when the URL ends with .gif', async () => {
const { view } = renderView({
...createImg('image.gif'),
});
-
- view.getByText('pausable');
+ // wait to find static image while loading pause ui
+ await view.findByRole('img');
+ // wait to find pause button
+ await waitFor(() => view.findByText('Pause animated image'));
+ view.getByText('Pause animated image');
});
it('renders a static image when the URL does not end with .gif', () => {
diff --git a/packages/gamut-labs/src/PausableImage/index.tsx b/packages/gamut-labs/src/PausableImage/index.tsx
index 79f80dedb4..9ebdd46132 100644
--- a/packages/gamut-labs/src/PausableImage/index.tsx
+++ b/packages/gamut-labs/src/PausableImage/index.tsx
@@ -1,11 +1,8 @@
import { css } from '@emotion/react';
import styled from '@emotion/styled';
-import loadable from '@loadable/component';
import * as React from 'react';
-const BaseImage = loadable(() => import('./BaseImage'), {
- ssr: false,
-});
+const BaseImage = React.lazy(() => import('./BaseImage'));
interface PauseableImageProps {
src: string;
@@ -27,10 +24,18 @@ const StaticImage = imageStyles;
export const PausableImage: React.FC = (props) => {
const staticImage = ;
+ // Avoid rendering React.Suspense on the server until it's fully supported by React & our applications
+ const [isMounted, setIsMounted] = React.useState(false);
+ React.useEffect(() => {
+ setIsMounted(true);
+ }, []);
+
return (
<>
- {props.src?.endsWith('.gif') ? (
-
+ {isMounted && props.src?.endsWith('.gif') ? (
+
+
+
) : (
staticImage
)}
diff --git a/packages/gamut-labs/tsconfig.lib.json b/packages/gamut-labs/tsconfig.lib.json
index b21c9cd30c..7e0f488422 100644
--- a/packages/gamut-labs/tsconfig.lib.json
+++ b/packages/gamut-labs/tsconfig.lib.json
@@ -26,6 +26,7 @@
"src/**/*.ts",
"src/**/*.tsx",
"typings/**/*.ts",
- "../../packages/gamut-styles/dist/typings/theme.d.ts"
+ "../../packages/gamut-styles/dist/typings/theme.d.ts",
+ "../../packages/gamut/dist/typings/*.d.ts"
]
}
diff --git a/packages/gamut-patterns/package.json b/packages/gamut-patterns/package.json
index 26b146e200..d1808f641d 100644
--- a/packages/gamut-patterns/package.json
+++ b/packages/gamut-patterns/package.json
@@ -27,8 +27,8 @@
"peerDependencies": {
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
- "react": ">=17.0.2",
- "react-dom": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0",
+ "react-dom": "^17.0.2 || ^18.2.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/gamut-patterns/tests/patterns.test.tsx b/packages/gamut-patterns/tests/patterns.test.tsx
index 1c8f0e73d2..96be2a0bc5 100644
--- a/packages/gamut-patterns/tests/patterns.test.tsx
+++ b/packages/gamut-patterns/tests/patterns.test.tsx
@@ -1,13 +1,19 @@
import { render } from '@testing-library/react';
import * as patterns from '../dist/patterns';
+import { CheckerDense as GenericPatternComponent } from '../dist/patterns/CheckerDense';
+
+const patternComponents = patterns as Record<
+ string,
+ typeof GenericPatternComponent
+>;
+const patternTable = Object.keys(patterns)
+ .filter((n) => !n.startsWith('_'))
+ .map((n) => [n]);
describe('patterns', () => {
- for (const [name, Pattern] of Object.entries(patterns)) {
- // Skip __esmodule export
- if (name.startsWith('_')) continue;
- it(`${name} renders`, () => {
- render();
- });
- }
+ it.each(patternTable)('%s renders', (name) => {
+ const Pattern = patternComponents[name];
+ render();
+ });
});
diff --git a/packages/gamut-styles/package.json b/packages/gamut-styles/package.json
index 51b3c44137..45e71370c8 100644
--- a/packages/gamut-styles/package.json
+++ b/packages/gamut-styles/package.json
@@ -30,13 +30,11 @@
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
"lodash": "^4.17.5",
- "react": ">=17.0.2",
- "react-helmet": "^6.1.0",
+ "react": "^17.0.2 || ^18.2.0",
"stylis": "^4.0.7"
},
"devDependencies": {
"@emotion/jest": "^11.3.0",
- "@types/react-helmet": "^6.1.0",
"component-test-setup": "^0.3.1"
},
"license": "MIT",
diff --git a/packages/gamut-styles/src/AssetProvider.tsx b/packages/gamut-styles/src/AssetProvider.tsx
index d6cd875bc1..9fe2ff6361 100644
--- a/packages/gamut-styles/src/AssetProvider.tsx
+++ b/packages/gamut-styles/src/AssetProvider.tsx
@@ -1,5 +1,3 @@
-import { Helmet } from 'react-helmet';
-
import { webFonts } from './remoteAssets/fonts';
export const createFontLinks = () =>
@@ -17,5 +15,5 @@ export const createFontLinks = () =>
);
export const AssetProvider = () => {
- return {createFontLinks()};
+ return <>{createFontLinks()}>;
};
diff --git a/packages/gamut-styles/src/GamutProvider.tsx b/packages/gamut-styles/src/GamutProvider.tsx
index cab70408a4..9e8a7e3fa1 100644
--- a/packages/gamut-styles/src/GamutProvider.tsx
+++ b/packages/gamut-styles/src/GamutProvider.tsx
@@ -14,6 +14,7 @@ import { Variables } from './globals/Variables';
import { coreTheme } from './themes/core';
export interface GamutProviderProps {
+ children?: React.ReactNode;
useGlobals?: boolean;
useCache?: boolean;
theme: Theme;
diff --git a/packages/gamut-styles/src/index.ts b/packages/gamut-styles/src/index.ts
index b7a12cb934..f084a13cd9 100644
--- a/packages/gamut-styles/src/index.ts
+++ b/packages/gamut-styles/src/index.ts
@@ -1,5 +1,6 @@
import '@emotion/react';
+export * from './AssetProvider';
export * from './GamutProvider';
export * from './ColorMode';
export * from './Background';
diff --git a/packages/gamut-tests/package.json b/packages/gamut-tests/package.json
index 8b5e4a8417..bc6056a025 100644
--- a/packages/gamut-tests/package.json
+++ b/packages/gamut-tests/package.json
@@ -22,7 +22,7 @@
"dist"
],
"peerDependencies": {
- "react": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0"
},
"publishConfig": {
"access": "public"
diff --git a/packages/gamut-tests/src/index.tsx b/packages/gamut-tests/src/index.tsx
index b51eded774..a4fad0e7cb 100644
--- a/packages/gamut-tests/src/index.tsx
+++ b/packages/gamut-tests/src/index.tsx
@@ -8,7 +8,9 @@ import * as React from 'react';
// See https://www.notion.so/codecademy/Frontend-Unit-Tests-1cbf4e078a6647559b4583dfb6d3cb18
-export const MockGamutProvider: React.FC = ({ children }) => {
+export const MockGamutProvider: React.FC<{ children?: React.ReactNode }> = ({
+ children,
+}) => {
return (
{children}
diff --git a/packages/gamut/package.json b/packages/gamut/package.json
index e77fa70de4..4f9b6a30f1 100644
--- a/packages/gamut/package.json
+++ b/packages/gamut/package.json
@@ -21,8 +21,8 @@
"peerDependencies": {
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
- "react": ">=17.0.2",
- "react-dom": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0",
+ "react-dom": "^17.0.2 || ^18.2.0"
},
"dependencies": {
"@codecademy/gamut-icons": "7.9.7",
@@ -34,8 +34,8 @@
"@reach/tabs": "^0.16.4",
"@types/marked": "^1.1.0",
"classnames": "^2.2.5",
- "framer-motion": "^4.1.17",
- "html-to-react": "^1.4.2",
+ "framer-motion": "^6.5.1",
+ "html-to-react": "^1.5.0",
"invariant": "^2.2.4",
"lodash": "^4.17.5",
"marked": "^0.7.0",
@@ -45,9 +45,9 @@
"react-hook-form": "^7.21.2",
"react-player": "^2.3.1",
"react-select": "^5.2.2",
- "react-truncate-markup": "^5.1.0",
+ "react-truncate-markup": "^5.1.2",
"react-use": "^15.3.8",
- "sanitize-markdown": "^2.6.6"
+ "sanitize-markdown": "^2.6.7"
},
"scripts": {
"verify": "tsc --noEmit",
diff --git a/packages/gamut/src/Alert/Alert.tsx b/packages/gamut/src/Alert/Alert.tsx
index b9be7337e0..a23817acc8 100644
--- a/packages/gamut/src/Alert/Alert.tsx
+++ b/packages/gamut/src/Alert/Alert.tsx
@@ -6,6 +6,7 @@ import { isValidElement, useState } from 'react';
import * as React from 'react';
import TruncateMarkup from 'react-truncate-markup';
+import { WithChildrenProp } from '..';
import { Box } from '../Box';
import { FillButton, IconButton } from '../Button';
import { alertVariants, placementVariants } from './variants';
@@ -13,7 +14,7 @@ import { alertVariants, placementVariants } from './variants';
export type AlertType = keyof typeof alertVariants;
export type AlertPlacements = 'inline' | 'floating';
-export interface AlertProps {
+export interface AlertProps extends WithChildrenProp {
type?: AlertType;
placement?: AlertPlacements;
hidden?: boolean;
diff --git a/packages/gamut/src/BodyPortal/index.tsx b/packages/gamut/src/BodyPortal/index.tsx
index 3d07ff9b8e..0f5a7a8190 100644
--- a/packages/gamut/src/BodyPortal/index.tsx
+++ b/packages/gamut/src/BodyPortal/index.tsx
@@ -5,6 +5,8 @@ import * as React from 'react';
import ReactDOM from 'react-dom';
import { useIsomorphicLayoutEffect } from 'react-use';
+import { WithChildrenProp } from '..';
+
const PortalWrapper = styled
.div(
system.css({
@@ -18,7 +20,7 @@ const PortalWrapper = styled
)
.withComponent(ColorMode);
-export const BodyPortal: React.FC = ({ children }) => {
+export const BodyPortal: React.FC = ({ children }) => {
const [ready, setReady] = useState(false);
const mode = useCurrentMode();
diff --git a/packages/gamut/src/Box/props.ts b/packages/gamut/src/Box/props.ts
index e312579229..e7aff40e6e 100644
--- a/packages/gamut/src/Box/props.ts
+++ b/packages/gamut/src/Box/props.ts
@@ -1,6 +1,8 @@
import { system } from '@codecademy/gamut-styles';
import { StyleProps, variance } from '@codecademy/variance';
+import { WithChildrenProp } from '..';
+
export const boxProps = variance.compose(
system.space,
system.border,
@@ -60,7 +62,8 @@ export const gridStates = system.states({
export interface BoxProps
extends StyleProps,
- StyleProps {}
+ StyleProps,
+ WithChildrenProp {}
export interface FlexBoxProps extends BoxProps, StyleProps {}
export interface GridBoxProps extends BoxProps, StyleProps {}
diff --git a/packages/gamut/src/Coachmark/index.tsx b/packages/gamut/src/Coachmark/index.tsx
index 3d44aae4a3..dfbceb6b2f 100644
--- a/packages/gamut/src/Coachmark/index.tsx
+++ b/packages/gamut/src/Coachmark/index.tsx
@@ -1,9 +1,10 @@
import { useEffect, useRef, useState } from 'react';
import * as React from 'react';
+import { WithChildrenProp } from '..';
import { Popover, PopoverProps } from '../Popover';
-export type CoachmarkProps = {
+export interface CoachmarkProps extends WithChildrenProp {
/**
* Applied to the element to which the coachmark points.
*/
@@ -25,7 +26,7 @@ export type CoachmarkProps = {
* Props to be passed into the popover component.
*/
popoverProps?: Partial;
-};
+}
export const Coachmark: React.FC = ({
children,
diff --git a/packages/gamut/src/ConnectedForm/__tests__/useDebouncedField.test.tsx b/packages/gamut/src/ConnectedForm/__tests__/useDebouncedField.test.tsx
index c74a8abe6e..9b2711f633 100644
--- a/packages/gamut/src/ConnectedForm/__tests__/useDebouncedField.test.tsx
+++ b/packages/gamut/src/ConnectedForm/__tests__/useDebouncedField.test.tsx
@@ -9,6 +9,7 @@ import {
Input,
useDebouncedField,
useFormState,
+ WithChildrenProp,
} from '../..';
const mockedSetValue = jest.fn();
@@ -34,7 +35,7 @@ const mockChangeValue =
const mockChangeKey = 'remake-intergrade';
const mockCheckboxKey = 'episode-inter-mission';
-const FormWrapper: React.FC = ({ children }) => (
+const FormWrapper: React.FC = ({ children }) => (
null}
defaultValues={{
diff --git a/packages/gamut/src/DataList/Controls/SortControl.tsx b/packages/gamut/src/DataList/Controls/SortControl.tsx
index 90f3d10478..54e4df1a67 100644
--- a/packages/gamut/src/DataList/Controls/SortControl.tsx
+++ b/packages/gamut/src/DataList/Controls/SortControl.tsx
@@ -39,6 +39,7 @@ const SortIcon = styled(ArrowChevronDownFilledIcon)(
interface SortControlProps {
columnKey: string;
onSort?: OnSort;
+ children: string;
}
const defaultSortOrder = ['asc', 'desc', 'none'] as SortOrder;
diff --git a/packages/gamut/src/DataList/Rows/HeaderRow.tsx b/packages/gamut/src/DataList/Rows/HeaderRow.tsx
index 825748378c..cd72074e67 100644
--- a/packages/gamut/src/DataList/Rows/HeaderRow.tsx
+++ b/packages/gamut/src/DataList/Rows/HeaderRow.tsx
@@ -38,52 +38,54 @@ export const Header: HeaderComponent = ({
return (
- {selectable && (
-
- {!hideSelectAll && (
-
- )}
-
- )}
- {columns.map(({ key, header, sortable, filters, ...colProps }) => {
- const rowProperty = key as string;
- const renderKey = prefixId(`header-col-${rowProperty}`);
- const columnText = header || key;
+ <>
+ {selectable && (
+
+ {!hideSelectAll && (
+
+ )}
+
+ )}
+ {columns.map(({ key, header, sortable, filters, ...colProps }) => {
+ const rowProperty = key as string;
+ const renderKey = prefixId(`header-col-${rowProperty}`);
+ const columnText = String(header || key);
- return (
-
-
- {filters && (
-
- )}
- {sortable ? (
-
- {columnText}
-
- ) : (
- columnText
- )}
-
+ return (
+
+
+ {filters && (
+
+ )}
+ {sortable ? (
+
+ {columnText}
+
+ ) : (
+ columnText
+ )}
+
+
+ );
+ })}
+ {expandable && (
+
+
- );
- })}
- {expandable && (
-
-
-
- )}
+ )}
+ >
);
};
diff --git a/packages/gamut/src/DataList/Rows/Row.tsx b/packages/gamut/src/DataList/Rows/Row.tsx
index 4a55c3dcd0..ce09322ef8 100644
--- a/packages/gamut/src/DataList/Rows/Row.tsx
+++ b/packages/gamut/src/DataList/Rows/Row.tsx
@@ -94,19 +94,21 @@ export const Row: DataRow = ({
return (
- {render ? (
- render(row)
- ) : typeof row[key] === 'string' ? (
-
- {row[key]}
-
- ) : (
- row[key]
- )}
+ <>
+ {render ? (
+ render(row)
+ ) : typeof row[key] === 'string' ? (
+
+ {row[key]}
+
+ ) : (
+ row[key]
+ )}
+ >
);
})}
diff --git a/packages/gamut/src/Flyout/index.tsx b/packages/gamut/src/Flyout/index.tsx
index d17e037ddc..ac646fe5f1 100644
--- a/packages/gamut/src/Flyout/index.tsx
+++ b/packages/gamut/src/Flyout/index.tsx
@@ -2,12 +2,13 @@ import { MiniDeleteIcon } from '@codecademy/gamut-icons';
import { Background, Colors } from '@codecademy/gamut-styles';
import * as React from 'react';
+import { WithChildrenProp } from '..';
import { IconButton } from '../Button';
import { Drawer } from '../Drawer';
import { Overlay } from '../Overlay';
import { Text } from '../Typography';
-export interface FlyoutProps {
+export interface FlyoutProps extends WithChildrenProp {
/**
* Accessibility label for the close button.
*/
diff --git a/packages/gamut/src/FocusTrap/index.tsx b/packages/gamut/src/FocusTrap/index.tsx
index 19680ca04b..136d530216 100644
--- a/packages/gamut/src/FocusTrap/index.tsx
+++ b/packages/gamut/src/FocusTrap/index.tsx
@@ -2,6 +2,8 @@ import * as React from 'react';
import { FocusOn } from 'react-focus-on';
import { ReactFocusOnProps } from 'react-focus-on/dist/es5/types';
+import { WithChildrenProp } from '..';
+
const focusOnStyles = {
/**
* Prevent the focus-on wrapper from interfering with parent layout
@@ -9,7 +11,7 @@ const focusOnStyles = {
display: 'contents',
};
-export type FocusTrapProps = {
+export interface FocusTrapProps extends WithChildrenProp {
className?: string;
/**
* Called when the FocusTrap requests to be closed via the escape key
@@ -34,7 +36,7 @@ export type FocusTrapProps = {
* Passthrough for react-focus-on library props
*/
focusOnProps?: ReactFocusOnProps;
-};
+}
export const FocusTrap: React.FC = ({
className,
diff --git a/packages/gamut/src/GridForm/__fixtures__/helpers.tsx b/packages/gamut/src/GridForm/__fixtures__/helpers.tsx
index 5b17f654f1..8153498397 100644
--- a/packages/gamut/src/GridForm/__fixtures__/helpers.tsx
+++ b/packages/gamut/src/GridForm/__fixtures__/helpers.tsx
@@ -1,8 +1,10 @@
import * as React from 'react';
-import { ConnectedForm } from '../..';
+import { ConnectedForm, WithChildrenProp } from '../..';
-type FormContextProps = { mode?: 'onChange' | 'onSubmit' };
+interface FormContextProps extends WithChildrenProp {
+ mode?: 'onChange' | 'onSubmit';
+}
export const FormContext: React.FC = ({
mode = 'onSubmit',
diff --git a/packages/gamut/src/List/ListRow.tsx b/packages/gamut/src/List/ListRow.tsx
index 9497c522c3..7edc09aaa2 100644
--- a/packages/gamut/src/List/ListRow.tsx
+++ b/packages/gamut/src/List/ListRow.tsx
@@ -2,7 +2,7 @@ import { AnimatePresence, motion } from 'framer-motion';
import { ComponentProps, forwardRef } from 'react';
import * as React from 'react';
-import { Box } from '..';
+import { Box, WithChildrenProp } from '..';
import { RowEl } from './elements';
import { useListContext } from './ListProvider';
import { PublicListProps } from './types';
@@ -28,7 +28,7 @@ export interface SimpleRowProps extends RowProps {
export type ListRowProps = ExpandableRowProps | SimpleRowProps;
-const ExpandInCollapseOut: React.FC = ({ children }) => {
+const ExpandInCollapseOut: React.FC = ({ children }) => {
return (
(
rowBreakpoint={rowBreakpoint}
{...wrapperProps}
>
- {content}
-
- {expanded && (
-
-
- {renderExpanded?.()}
-
-
- )}
-
+ <>
+ {content}
+
+ {expanded && (
+
+
+ {renderExpanded?.()}
+
+
+ )}
+
+ >
);
}
diff --git a/packages/gamut/src/Markdown/libs/overrides/Details/index.tsx b/packages/gamut/src/Markdown/libs/overrides/Details/index.tsx
index 1b6ed89fd1..a261fa78cc 100644
--- a/packages/gamut/src/Markdown/libs/overrides/Details/index.tsx
+++ b/packages/gamut/src/Markdown/libs/overrides/Details/index.tsx
@@ -4,8 +4,10 @@ import * as React from 'react';
import { Box } from '../../../../Box';
import { HTMLToReactNode } from '..';
// import styles from '../../../styles/_'
-export interface MarkdownDetailsProps
- extends HTMLAttributes {
+
+interface MarkdownHTMLDetailsAttributes
+ extends Omit, 'children'> {}
+export interface MarkdownDetailsProps extends MarkdownHTMLDetailsAttributes {
open?: boolean;
children?: HTMLToReactNode[];
}
@@ -33,7 +35,11 @@ const getStyledDetailChildren = ({
return {
summary,
- children: [{copiedChildren.map((elem) => elem)}],
+ children: (
+
+ <>{copiedChildren.map((elem) => elem)}>
+
+ ),
};
}
};
@@ -56,8 +62,10 @@ export const Details: React.FC = ({
return (
- {editedDetails?.summary}
- {editedDetails?.children}
+ <>
+ {editedDetails?.summary}
+ {editedDetails?.children}
+ >
);
};
diff --git a/packages/gamut/src/Motion/FadeInSlideOut.tsx b/packages/gamut/src/Motion/FadeInSlideOut.tsx
index e283a09040..222c657b20 100644
--- a/packages/gamut/src/Motion/FadeInSlideOut.tsx
+++ b/packages/gamut/src/Motion/FadeInSlideOut.tsx
@@ -2,6 +2,7 @@ import { timingValues } from '@codecademy/gamut-styles';
import { motion } from 'framer-motion';
import * as React from 'react';
+import { WithChildrenProp } from '..';
import { Box } from '../Box';
const exitDuration = timingValues.fast / 1000;
@@ -26,7 +27,7 @@ const motionVariants = {
const BaseContainer = motion(Box);
-export const FadeInSlideOut: React.FC = ({ children }) => (
+export const FadeInSlideOut: React.FC = ({ children }) => (
= ({
}, [targetRect, isInViewport, onRequestClose]);
const handleClickOutside = useCallback(
- (e) => {
+ (e: MouseEvent) => {
/**
* Allows targetRef to be or contain a button that toggles the popover open and closed.
* Without this check it would toggle closed then back open immediately.
diff --git a/packages/gamut/src/Popover/elements.tsx b/packages/gamut/src/Popover/elements.tsx
index feefd67214..fbfb17f985 100644
--- a/packages/gamut/src/Popover/elements.tsx
+++ b/packages/gamut/src/Popover/elements.tsx
@@ -4,6 +4,7 @@ import styled from '@emotion/styled';
import { AnimatePresence, motion } from 'framer-motion';
import * as React from 'react';
+import { WithChildrenProp } from '..';
import { BodyPortal } from '../BodyPortal';
import { Box } from '../Box';
import { toolTipBodyAlignments } from '../ToolTip/styles';
@@ -50,7 +51,7 @@ export const PatternContainer = styled.div(
);
export const PopoverPortal: React.FC<
- Pick
+ Pick & WithChildrenProp
> = ({ animation, isOpen, ...rest }) =>
animation ? (
diff --git a/packages/gamut/src/PopoverContainer/PopoverContainer.tsx b/packages/gamut/src/PopoverContainer/PopoverContainer.tsx
index e5c16a2b0e..afa1c3dfd9 100644
--- a/packages/gamut/src/PopoverContainer/PopoverContainer.tsx
+++ b/packages/gamut/src/PopoverContainer/PopoverContainer.tsx
@@ -74,7 +74,8 @@ export const PopoverContainer: React.FC = ({
* Without this check it would toggle closed then back open immediately.
*/
const handleClickOutside = useCallback(
- (e) => !targetRef.current?.contains(e.target as Node) && onRequestClose?.(),
+ (e: MouseEvent | TouchEvent) =>
+ !targetRef.current?.contains(e.target as Node) && onRequestClose?.(),
[onRequestClose, targetRef]
);
diff --git a/packages/gamut/src/PopoverContainer/types.ts b/packages/gamut/src/PopoverContainer/types.ts
index 52c43c92ab..7571295368 100644
--- a/packages/gamut/src/PopoverContainer/types.ts
+++ b/packages/gamut/src/PopoverContainer/types.ts
@@ -1,5 +1,7 @@
import { RefObject } from 'react';
+import { WithChildrenProp } from '..';
+
export type Alignments =
| 'top-left'
| 'top-right'
@@ -64,7 +66,9 @@ export interface PopoverPositionConfig extends PopoverAlignment {
alignment: Alignments;
}
-export interface PopoverContainerProps extends PopoverAlignment {
+export interface PopoverContainerProps
+ extends PopoverAlignment,
+ WithChildrenProp {
className?: string;
/**
* Whether the popover is rendered.
diff --git a/packages/gamut/src/Tag/types.tsx b/packages/gamut/src/Tag/types.tsx
index a56417032b..5ac35f1beb 100644
--- a/packages/gamut/src/Tag/types.tsx
+++ b/packages/gamut/src/Tag/types.tsx
@@ -1,11 +1,13 @@
import { StyleProps } from '@codecademy/variance';
+import { WithChildrenProp } from '..';
import { ButtonProps } from '../Button';
import { colorVariants, tagProps } from './elements';
export interface BaseTagProps
extends StyleProps,
- StyleProps {}
+ StyleProps,
+ WithChildrenProp {}
export interface ReadOnlyTagProps extends BaseTagProps {
/**
* If the DismissButton should be shown.
diff --git a/packages/gamut/src/Toast/Toast.tsx b/packages/gamut/src/Toast/Toast.tsx
index 9e9abc3f0d..68ef37fe9c 100644
--- a/packages/gamut/src/Toast/Toast.tsx
+++ b/packages/gamut/src/Toast/Toast.tsx
@@ -5,6 +5,7 @@ import styled from '@emotion/styled';
import { ReactNode, useMemo } from 'react';
import * as React from 'react';
+import { WithChildrenProp } from '..';
import { Box, FlexBox } from '../Box';
import { IconButton } from '../Button/IconButton';
import { FloatingCard } from '../FloatingCard/FloatingCard';
@@ -52,11 +53,11 @@ const IconContainer = styled(FlexBox)(
})
);
-export type ToastProps = {
+export interface ToastProps extends WithChildrenProp {
title?: ReactNode;
icon?: ReactNode;
onClose: () => void;
-};
+}
export const Toast: React.FC = ({
title,
diff --git a/packages/gamut/src/utils/childrenType.ts b/packages/gamut/src/utils/childrenType.ts
new file mode 100644
index 0000000000..c284486b8d
--- /dev/null
+++ b/packages/gamut/src/utils/childrenType.ts
@@ -0,0 +1,3 @@
+export interface WithChildrenProp {
+ children?: React.ReactNode | React.ReactNode[];
+}
diff --git a/packages/gamut/src/utils/generateResponsiveClassnames.ts b/packages/gamut/src/utils/generateResponsiveClassnames.ts
index 133df99f6f..33049fe3ed 100644
--- a/packages/gamut/src/utils/generateResponsiveClassnames.ts
+++ b/packages/gamut/src/utils/generateResponsiveClassnames.ts
@@ -19,12 +19,16 @@ export const generateResponsiveClassnames = (
Object.entries(config).forEach(([propName, propValue]) => {
switch (typeof propValue) {
case 'number':
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore: Fallthrough case in switch.
case 'string': {
const mappedClass = styleMap[`${propName}_${propValue}__xs`];
if (mappedClass) {
styleList.push(mappedClass);
}
}
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
+ // @ts-ignore: Fallthrough case in switch.
case 'object': {
if (propValue !== null) {
Object.entries(propValue).forEach(([mediaSize, mediaPropValue]) => {
diff --git a/packages/gamut/src/utils/index.ts b/packages/gamut/src/utils/index.ts
index e9dbb0b266..0cf07858c7 100644
--- a/packages/gamut/src/utils/index.ts
+++ b/packages/gamut/src/utils/index.ts
@@ -1,3 +1,4 @@
+export * from './childrenType';
export * from './createPromise';
-export * from './omitProps';
export * from './generateResponsiveClassnames';
+export * from './omitProps';
diff --git a/packages/markdown-overrides/package.json b/packages/markdown-overrides/package.json
index e3ed8ab746..a8c07d0326 100644
--- a/packages/markdown-overrides/package.json
+++ b/packages/markdown-overrides/package.json
@@ -16,8 +16,8 @@
"build": "nx build @codecademy/markdown-overrides"
},
"peerDependencies": {
- "react": ">=17.0.2",
- "react-dom": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0",
+ "react-dom": "^17.0.2 || ^18.2.0"
},
"dependencies": {
"@codecademy/gamut-styles": "14.2.5",
diff --git a/packages/markdown-overrides/src/ErrorBlock/index.tsx b/packages/markdown-overrides/src/ErrorBlock/index.tsx
index 011e1fa302..0c2331942f 100644
--- a/packages/markdown-overrides/src/ErrorBlock/index.tsx
+++ b/packages/markdown-overrides/src/ErrorBlock/index.tsx
@@ -1,14 +1,11 @@
import cx from 'classnames';
import * as React from 'react';
+import { GenericMarkdownProps } from '../types';
// eslint-disable-next-line gamut/no-css-standalone
import styles from './styles.module.scss';
-export type ErrorBlockProps = {
- className?: string;
-};
-
-export const ErrorBlock: React.FC = ({
+export const ErrorBlock: React.FC = ({
children,
className,
}) => {
diff --git a/packages/markdown-overrides/src/PseudoBlock/index.tsx b/packages/markdown-overrides/src/PseudoBlock/index.tsx
index 59f07dade3..1fa0e9636a 100644
--- a/packages/markdown-overrides/src/PseudoBlock/index.tsx
+++ b/packages/markdown-overrides/src/PseudoBlock/index.tsx
@@ -1,14 +1,11 @@
import cx from 'classnames';
import * as React from 'react';
+import { GenericMarkdownProps } from '../types';
// eslint-disable-next-line gamut/no-css-standalone
import styles from './styles.module.scss';
-export type PseudoBlockProps = {
- className?: string;
-};
-
-export const PseudoBlock: React.FC = ({
+export const PseudoBlock: React.FC = ({
children,
className,
}) => {
diff --git a/packages/markdown-overrides/src/types.ts b/packages/markdown-overrides/src/types.ts
new file mode 100644
index 0000000000..20e3247d2f
--- /dev/null
+++ b/packages/markdown-overrides/src/types.ts
@@ -0,0 +1,4 @@
+export type GenericMarkdownProps = {
+ className?: string;
+ children?: React.ReactNode;
+};
diff --git a/packages/monaco/package.json b/packages/monaco/package.json
index 4a6b10e929..bea1860429 100644
--- a/packages/monaco/package.json
+++ b/packages/monaco/package.json
@@ -13,8 +13,8 @@
"url": "git+https://github.com/Codecademy/gamut/packages/monaco.git"
},
"peerDependencies": {
- "react": ">=17.0.2",
- "react-dom": ">=17.0.2"
+ "react": "^17.0.2 || ^18.2.0",
+ "react-dom": "^17.0.2 || ^18.2.0"
},
"dependencies": {
"@codecademy/gamut": "51.7.3",
@@ -23,10 +23,9 @@
"@emotion/styled": "^11.3.0",
"monaco-editor": "0.20.0",
"react-monaco-editor": "0.46.0",
- "react-resize-detector": "5.2.0"
+ "react-resize-detector": "7.1.2"
},
"devDependencies": {
- "@types/react-resize-detector": "5.0.0",
"monaco-editor-webpack-plugin": "1.9.1"
},
"scripts": {
diff --git a/packages/styleguide/.storybook/components/Docs/DocsContainer.tsx b/packages/styleguide/.storybook/components/Docs/DocsContainer.tsx
index e321d57d1d..ff43dabee6 100644
--- a/packages/styleguide/.storybook/components/Docs/DocsContainer.tsx
+++ b/packages/styleguide/.storybook/components/Docs/DocsContainer.tsx
@@ -1,6 +1,7 @@
import { MDXProvider } from '@mdx-js/react';
import { ThemeProvider, ensure as ensureTheme } from '@storybook/theming';
import { components as htmlComponents } from '@storybook/components';
+import Helmet from 'react-helmet';
import {
DocsContext,
SourceContainer,
@@ -109,7 +110,9 @@ export const DocsContainer: React.FC<{ context: DocsContextProps }> = ({
cache={createEmotionCache({ speedy: false })}
theme={coreTheme}
>
-
+
+
+
diff --git a/packages/styleguide/.storybook/main.ts b/packages/styleguide/.storybook/main.ts
index d71341b6da..df2fee60d5 100644
--- a/packages/styleguide/.storybook/main.ts
+++ b/packages/styleguide/.storybook/main.ts
@@ -57,10 +57,18 @@ module.exports = {
configs.css().module.rules
);
+ config.module.rules.push({
+ test: /\.mjs$/,
+ include: /node_modules/,
+ type: 'javascript/auto',
+ });
+
config.resolve = {
...config.resolve,
alias: {
...emotionless(config.resolve.alias),
+ // Prevent usage of ESM version of htmlparser2
+ htmlparser2$: 'htmlparser2/lib/index.js',
'~styleguide/blocks': path.resolve(__dirname, './components/'),
'@codecademy/storybook-addon-variance': path.resolve(
__dirname,
diff --git a/packages/styleguide/package.json b/packages/styleguide/package.json
index f19c03a9a5..d88ab07ffe 100644
--- a/packages/styleguide/package.json
+++ b/packages/styleguide/package.json
@@ -48,8 +48,8 @@
"lodash": "4.17.20",
"polished": "^4.1.2",
"postcss-loader": "^3.0.0",
- "react": "17.0.2",
- "react-dom": "17.0.2",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2",
"sass": "1.56.2",
"sass-loader": "^10.1.1",
"storybook-addon-designs": "^6.0.1",
diff --git a/packages/styleguide/stories/Atoms/FormInputs/Input.stories.mdx b/packages/styleguide/stories/Atoms/FormInputs/Input.stories.mdx
index a74099d5e3..49b96a7aba 100644
--- a/packages/styleguide/stories/Atoms/FormInputs/Input.stories.mdx
+++ b/packages/styleguide/stories/Atoms/FormInputs/Input.stories.mdx
@@ -1,9 +1,4 @@
-import {
- FormGroup,
- GridBox,
- Input,
- ReactRecurlyStyles,
-} from '@codecademy/gamut';
+import { FormGroup, GridBox, Input } from '@codecademy/gamut';
import { AmexIcon, StreakIcon, ViewIcon } from '@codecademy/gamut-icons';
import title from '@codecademy/macros/lib/title.macro';
import { PropsTable } from '@codecademy/storybook-addon-variance';
@@ -12,7 +7,6 @@ import { Canvas, Meta, Story } from '@storybook/addon-docs/blocks';
` element for handling "text", "number" and "file" input types',
diff --git a/packages/styleguide/stories/Brand Labs/Molecules/AppBar.stories.mdx b/packages/styleguide/stories/Brand Labs/Molecules/AppBar.stories.mdx
index 172f54def9..cc3fedd474 100644
--- a/packages/styleguide/stories/Brand Labs/Molecules/AppBar.stories.mdx
+++ b/packages/styleguide/stories/Brand Labs/Molecules/AppBar.stories.mdx
@@ -1,5 +1,4 @@
-import { AppBar, AppBarSection } from '@codecademy/gamut/src';
-import { Logo } from '@codecademy/gamut-labs/src';
+import { AppBar, AppBarSection, Logo } from '@codecademy/gamut-labs/src';
import title from '@codecademy/macros/lib/title.macro';
import { PropsTable } from '@codecademy/storybook-addon-variance';
import { Canvas, Meta, Story } from '@storybook/addon-docs/blocks';
diff --git a/packages/styleguide/stories/Molecules/Coachmark/index.stories.mdx b/packages/styleguide/stories/Molecules/Coachmark/index.stories.mdx
index bd53ff0da7..a39410eda9 100644
--- a/packages/styleguide/stories/Molecules/Coachmark/index.stories.mdx
+++ b/packages/styleguide/stories/Molecules/Coachmark/index.stories.mdx
@@ -1,4 +1,4 @@
-import { Coachmark } from '@codecademy/gamut-labs/src';
+import { Coachmark } from '@codecademy/gamut/src';
import title from '@codecademy/macros/lib/title.macro';
import { PropsTable } from '@codecademy/storybook-addon-variance';
import { Canvas, Meta, Story } from '@storybook/addon-docs/blocks';
diff --git a/packages/styleguide/stories/Molecules/Popover/index.stories.mdx b/packages/styleguide/stories/Molecules/Popover/index.stories.mdx
index db3f218a07..6e4420638d 100644
--- a/packages/styleguide/stories/Molecules/Popover/index.stories.mdx
+++ b/packages/styleguide/stories/Molecules/Popover/index.stories.mdx
@@ -1,4 +1,4 @@
-import { Popover } from '@codecademy/gamut-labs/src';
+import { Popover } from '@codecademy/gamut/src';
import title from '@codecademy/macros/lib/title.macro';
import { PropsTable } from '@codecademy/storybook-addon-variance';
import { Canvas, Meta, Story } from '@storybook/addon-docs/blocks';
diff --git a/packages/styleguide/stories/Organisms/ConnectedForm/ConnectedFormInputs.stories.mdx b/packages/styleguide/stories/Organisms/ConnectedForm/ConnectedFormInputs.stories.mdx
index 41b9e7b48c..d4be9bf942 100644
--- a/packages/styleguide/stories/Organisms/ConnectedForm/ConnectedFormInputs.stories.mdx
+++ b/packages/styleguide/stories/Organisms/ConnectedForm/ConnectedFormInputs.stories.mdx
@@ -1,9 +1,9 @@
import {
Box,
- ConnectedFormInput,
+ ConnectedInput,
ConnectedRadioGroupInput,
List,
-} from '@codecademy/gamut';
+} from '@codecademy/gamut/src';
import title from '@codecademy/macros/lib/title.macro';
import { PropsTable } from '@codecademy/storybook-addon-variance';
import { Meta } from '@storybook/addon-docs/blocks';
@@ -13,7 +13,7 @@ import { ListRowRenderer } from './utils';
-We have a selection of `ConnectedFormInput` components that are visually identical to their un-connected FormInput counterparts. Please reference the links below for component-specific prop and styling configuration:
+We have a selection of `ConnectedInput` components that are visually identical to their un-connected FormInput counterparts. Please reference the links below for component-specific prop and styling configuration:
diff --git a/packages/styleguide/stories/Organisms/Markdown/index.stories.mdx b/packages/styleguide/stories/Organisms/Markdown/index.stories.mdx
index bcb0a5b7a1..fa3f3147db 100644
--- a/packages/styleguide/stories/Organisms/Markdown/index.stories.mdx
+++ b/packages/styleguide/stories/Organisms/Markdown/index.stories.mdx
@@ -1,4 +1,4 @@
-import { Markdown, TextDeprecated } from '@codecademy/gamut/src';
+import { Markdown, Text } from '@codecademy/gamut/src';
import title from '@codecademy/macros/lib/title.macro';
import { PropsTable } from '@codecademy/storybook-addon-variance';
import { Canvas, Meta, Story } from '@storybook/addon-docs/blocks';
@@ -70,7 +70,7 @@ If you need to override a link, iframe, or table, you also need to provide the `
export const overrides = {
a: {
- component: TextDeprecated,
+ component: Text,
},
};
diff --git a/packages/variance/package.json b/packages/variance/package.json
index 7112600049..f7a64507b0 100644
--- a/packages/variance/package.json
+++ b/packages/variance/package.json
@@ -38,8 +38,8 @@
"devDependencies": {
"@emotion/jest": "^11.3.0",
"@emotion/styled": "^11.3.0",
- "@types/react-test-renderer": "^17.0.1",
- "react": "17.0.2",
- "react-test-renderer": "17.0.2"
+ "@types/react-test-renderer": "^17.0.2",
+ "react": "^17.0.2",
+ "react-test-renderer": "^17.0.2"
}
}
diff --git a/script/jest/base-setup.js b/script/jest/base-setup.js
index 7493dcfa1b..73799f7870 100644
--- a/script/jest/base-setup.js
+++ b/script/jest/base-setup.js
@@ -1,4 +1,9 @@
// Set fixed date
Date.now = jest.fn(() => new Date(2011, 6, 1).valueOf());
+// eslint-disable-next-line @typescript-eslint/no-empty-function
+function noop() {}
+
+Object.defineProperty(window, 'scrollTo', { value: noop, writable: true });
+
require('mutationobserver-shim');
diff --git a/yarn.lock b/yarn.lock
index 832dbe9d9f..c7204aa263 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -15,16 +15,16 @@
"@jridgewell/gen-mapping" "^0.1.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@babel/cli@7.17.10":
- version "7.17.10"
- resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.17.10.tgz#5ea0bf6298bb78f3b59c7c06954f9bd1c79d5943"
- integrity sha512-OygVO1M2J4yPMNOW9pb+I6kFGpQK77HmG44Oz3hg8xQIl5L/2zq+ZohwAdSaqYgVwM0SfmPHZHphH4wR8qzVYw==
+"@babel/cli@7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/cli/-/cli-7.20.7.tgz#8fc12e85c744a1a617680eacb488fab1fcd35b7c"
+ integrity sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ==
dependencies:
"@jridgewell/trace-mapping" "^0.3.8"
commander "^4.0.1"
convert-source-map "^1.1.0"
fs-readdir-recursive "^1.1.0"
- glob "^7.0.0"
+ glob "^7.2.0"
make-dir "^2.1.0"
slash "^2.0.0"
optionalDependencies:
@@ -81,6 +81,11 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d"
integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==
+"@babel/compat-data@^7.20.5":
+ version "7.20.10"
+ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec"
+ integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg==
+
"@babel/core@*", "@babel/core@^7.1.0", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0":
version "7.18.9"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59"
@@ -124,27 +129,26 @@
semver "^5.4.1"
source-map "^0.5.0"
-"@babel/core@7.13.10":
- version "7.13.10"
- resolved "https://registry.npmjs.org/@babel/core/-/core-7.13.10.tgz#07de050bbd8193fcd8a3c27918c0890613a94559"
- integrity sha512-bfIYcT0BdKeAZrovpMqX2Mx5NrgAckGbwT982AkdS5GNfn3KMGiprlBAtmBcFZRUmpaufS6WZFP8trvx8ptFDw==
+"@babel/core@7.20.12":
+ version "7.20.12"
+ resolved "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d"
+ integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==
dependencies:
- "@babel/code-frame" "^7.12.13"
- "@babel/generator" "^7.13.9"
- "@babel/helper-compilation-targets" "^7.13.10"
- "@babel/helper-module-transforms" "^7.13.0"
- "@babel/helpers" "^7.13.10"
- "@babel/parser" "^7.13.10"
- "@babel/template" "^7.12.13"
- "@babel/traverse" "^7.13.0"
- "@babel/types" "^7.13.0"
+ "@ampproject/remapping" "^2.1.0"
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.7"
+ "@babel/helper-compilation-targets" "^7.20.7"
+ "@babel/helper-module-transforms" "^7.20.11"
+ "@babel/helpers" "^7.20.7"
+ "@babel/parser" "^7.20.7"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.12"
+ "@babel/types" "^7.20.7"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
- json5 "^2.1.2"
- lodash "^4.17.19"
+ json5 "^2.2.2"
semver "^6.3.0"
- source-map "^0.5.0"
"@babel/core@^7.0.1", "@babel/core@^7.15.0", "@babel/core@^7.18.5":
version "7.18.10"
@@ -212,6 +216,15 @@
"@jridgewell/gen-mapping" "^0.3.2"
jsesc "^2.5.1"
+"@babel/generator@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a"
+ integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw==
+ dependencies:
+ "@babel/types" "^7.20.7"
+ "@jridgewell/gen-mapping" "^0.3.2"
+ jsesc "^2.5.1"
+
"@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.13":
version "7.12.13"
resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz#0f58e86dfc4bb3b1fcd7db806570e177d439b6ab"
@@ -262,6 +275,17 @@
browserslist "^4.20.2"
semver "^6.3.0"
+"@babel/helper-compilation-targets@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb"
+ integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==
+ dependencies:
+ "@babel/compat-data" "^7.20.5"
+ "@babel/helper-validator-option" "^7.18.6"
+ browserslist "^4.21.3"
+ lru-cache "^5.1.1"
+ semver "^6.3.0"
+
"@babel/helper-create-class-features-plugin@^7.13.0":
version "7.13.11"
resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.11.tgz#30d30a005bca2c953f5653fc25091a492177f4f6"
@@ -395,6 +419,14 @@
"@babel/template" "^7.18.6"
"@babel/types" "^7.18.9"
+"@babel/helper-function-name@^7.19.0":
+ version "7.19.0"
+ resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
+ integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
+ dependencies:
+ "@babel/template" "^7.18.10"
+ "@babel/types" "^7.19.0"
+
"@babel/helper-get-function-arity@^7.14.5", "@babel/helper-get-function-arity@^7.16.0":
version "7.16.0"
resolved "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz#0088c7486b29a9cb5d948b1a1de46db66e089cfa"
@@ -458,7 +490,7 @@
dependencies:
"@babel/types" "^7.13.12"
-"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6":
+"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
@@ -500,6 +532,20 @@
"@babel/traverse" "^7.18.9"
"@babel/types" "^7.18.9"
+"@babel/helper-module-transforms@^7.20.11":
+ version "7.20.11"
+ resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0"
+ integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-module-imports" "^7.18.6"
+ "@babel/helper-simple-access" "^7.20.2"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.10"
+ "@babel/types" "^7.20.7"
+
"@babel/helper-optimise-call-expression@^7.12.13", "@babel/helper-optimise-call-expression@^7.16.0":
version "7.16.0"
resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz#cecdb145d70c54096b1564f8e9f10cd7d193b338"
@@ -611,6 +657,13 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-simple-access@^7.20.2":
+ version "7.20.2"
+ resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9"
+ integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
+ dependencies:
+ "@babel/types" "^7.20.2"
+
"@babel/helper-skip-transparent-expression-wrappers@^7.12.1":
version "7.12.1"
resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf"
@@ -658,6 +711,11 @@
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56"
integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==
+"@babel/helper-string-parser@^7.19.4":
+ version "7.19.4"
+ resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
+ integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+
"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.15.7":
version "7.15.7"
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
@@ -668,6 +726,11 @@
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076"
integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==
+"@babel/helper-validator-identifier@^7.19.1":
+ version "7.19.1"
+ resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
+ integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
+
"@babel/helper-validator-option@^7.12.17":
version "7.14.5"
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3"
@@ -707,7 +770,7 @@
"@babel/traverse" "^7.13.17"
"@babel/types" "^7.13.17"
-"@babel/helpers@^7.13.10", "@babel/helpers@^7.18.9":
+"@babel/helpers@^7.18.9":
version "7.18.9"
resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9"
integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==
@@ -716,6 +779,15 @@
"@babel/traverse" "^7.18.9"
"@babel/types" "^7.18.9"
+"@babel/helpers@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce"
+ integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA==
+ dependencies:
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.7"
+ "@babel/types" "^7.20.7"
+
"@babel/highlight@^7.10.4":
version "7.14.5"
resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
@@ -753,11 +825,6 @@
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4"
integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA==
-"@babel/parser@^7.13.10", "@babel/parser@^7.18.10", "@babel/parser@^7.18.11":
- version "7.18.11"
- resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9"
- integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==
-
"@babel/parser@^7.14.5":
version "7.17.7"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.7.tgz#fc19b645a5456c8d6fdb6cecd3c66c0173902800"
@@ -773,11 +840,21 @@
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78"
integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==
+"@babel/parser@^7.18.10", "@babel/parser@^7.18.11":
+ version "7.18.11"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9"
+ integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ==
+
"@babel/parser@^7.18.6", "@babel/parser@^7.18.9":
version "7.18.9"
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539"
integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==
+"@babel/parser@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b"
+ integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg==
+
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2"
@@ -1198,7 +1275,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.12.13"
-"@babel/plugin-syntax-jsx@^7.18.6":
+"@babel/plugin-syntax-jsx@^7.17.12", "@babel/plugin-syntax-jsx@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
@@ -2107,7 +2184,7 @@
"@babel/plugin-transform-react-jsx-development" "^7.12.17"
"@babel/plugin-transform-react-pure-annotations" "^7.12.1"
-"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.17.12":
+"@babel/preset-react@^7.14.5", "@babel/preset-react@^7.17.12", "@babel/preset-react@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d"
integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==
@@ -2128,7 +2205,7 @@
"@babel/helper-validator-option" "^7.12.17"
"@babel/plugin-transform-typescript" "^7.13.0"
-"@babel/preset-typescript@^7.13.0", "@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.17.12":
+"@babel/preset-typescript@^7.15.0", "@babel/preset-typescript@^7.17.12", "@babel/preset-typescript@^7.18.6":
version "7.18.6"
resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399"
integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==
@@ -2156,7 +2233,7 @@
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.13.17", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.7.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.13.17", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.17.2"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.2.tgz#66f68591605e59da47523c631416b18508779941"
integrity sha512-hzeyJyMA1YGdJTuWU0e/j4wKXrU4OMFvY2MSlaI9B7VQb0r5cxTE3EAIS2Q7Tn2RIcDkRvTA/v2JsAEhxe99uw==
@@ -2177,6 +2254,13 @@
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.18.3":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.7.tgz#fcb41a5a70550e04a7b708037c7c32f7f356d8fd"
+ integrity sha512-UF0tvkUtxwAgZ5W/KrkHf0Rn0fdnLDU9ScxBrEVNUprE/MzirjK4MJUX1/BVDv00Sv8cljtukVK1aky++X1SjQ==
+ dependencies:
+ regenerator-runtime "^0.13.11"
+
"@babel/template@^7.12.13", "@babel/template@^7.14.5", "@babel/template@^7.3.3":
version "7.14.5"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4"
@@ -2222,6 +2306,15 @@
"@babel/parser" "^7.18.6"
"@babel/types" "^7.18.6"
+"@babel/template@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
+ integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+
"@babel/traverse@^7.12.11":
version "7.14.8"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce"
@@ -2299,6 +2392,22 @@
debug "^4.1.0"
globals "^11.1.0"
+"@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7":
+ version "7.20.12"
+ resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5"
+ integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ==
+ dependencies:
+ "@babel/code-frame" "^7.18.6"
+ "@babel/generator" "^7.20.7"
+ "@babel/helper-environment-visitor" "^7.18.9"
+ "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-hoist-variables" "^7.18.6"
+ "@babel/helper-split-export-declaration" "^7.18.6"
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
+ debug "^4.1.0"
+ globals "^11.1.0"
+
"@babel/traverse@^7.7.2":
version "7.17.10"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5"
@@ -2332,6 +2441,15 @@
"@babel/helper-validator-identifier" "^7.18.6"
to-fast-properties "^2.0.0"
+"@babel/types@^7.19.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f"
+ integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==
+ dependencies:
+ "@babel/helper-string-parser" "^7.19.4"
+ "@babel/helper-validator-identifier" "^7.19.1"
+ to-fast-properties "^2.0.0"
+
"@base2/pretty-print-object@1.0.0":
version "1.0.0"
resolved "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.0.tgz#860ce718b0b73f4009e153541faff2cb6b85d047"
@@ -2434,6 +2552,24 @@
debug "^4.3.2"
lodash "^4.17.20"
+"@emotion/babel-plugin@^11.10.5":
+ version "11.10.5"
+ resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.5.tgz#65fa6e1790ddc9e23cc22658a4c5dea423c55c3c"
+ integrity sha512-xE7/hyLHJac7D2Ve9dKroBBZqBT7WuPQmWcq7HSGb84sUuP4mlOWoB8dvVfD9yk5DHkU1m6RW7xSoDtnQHNQeA==
+ dependencies:
+ "@babel/helper-module-imports" "^7.16.7"
+ "@babel/plugin-syntax-jsx" "^7.17.12"
+ "@babel/runtime" "^7.18.3"
+ "@emotion/hash" "^0.9.0"
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/serialize" "^1.1.1"
+ babel-plugin-macros "^3.1.0"
+ convert-source-map "^1.5.0"
+ escape-string-regexp "^4.0.0"
+ find-root "^1.1.0"
+ source-map "^0.5.7"
+ stylis "4.1.3"
+
"@emotion/babel-plugin@^11.3.0":
version "11.3.0"
resolved "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.3.0.tgz#3a16850ba04d8d9651f07f3fb674b3436a4fb9d7"
@@ -2507,6 +2643,11 @@
resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
+"@emotion/hash@^0.9.0":
+ version "0.9.0"
+ resolved "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.0.tgz#c5153d50401ee3c027a57a177bc269b16d889cb7"
+ integrity sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==
+
"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.2", "@emotion/is-prop-valid@^0.8.6":
version "0.8.8"
resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
@@ -2542,6 +2683,11 @@
resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50"
integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==
+"@emotion/memoize@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f"
+ integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==
+
"@emotion/react@^11.1.1", "@emotion/react@^11.4.0":
version "11.4.0"
resolved "https://registry.npmjs.org/@emotion/react/-/react-11.4.0.tgz#2465ad7b073a691409b88dfd96dc17097ddad9b7"
@@ -2577,6 +2723,17 @@
"@emotion/utils" "^1.0.0"
csstype "^3.0.2"
+"@emotion/serialize@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.1.tgz#0595701b1902feded8a96d293b26be3f5c1a5cf0"
+ integrity sha512-Zl/0LFggN7+L1liljxXdsVSVlg6E/Z/olVWpfxUTxOAmi8NU7YoeWeLfi1RmnB2TATHoaWwIBRoL+FvAJiTUQA==
+ dependencies:
+ "@emotion/hash" "^0.9.0"
+ "@emotion/memoize" "^0.8.0"
+ "@emotion/unitless" "^0.8.0"
+ "@emotion/utils" "^1.2.0"
+ csstype "^3.0.2"
+
"@emotion/sheet@0.9.4":
version "0.9.4"
resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5"
@@ -2626,6 +2783,11 @@
resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed"
integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==
+"@emotion/unitless@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.0.tgz#a4a36e9cbdc6903737cd20d38033241e1b8833db"
+ integrity sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==
+
"@emotion/utils@0.11.3":
version "0.11.3"
resolved "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924"
@@ -2636,6 +2798,11 @@
resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.0.0.tgz#abe06a83160b10570816c913990245813a2fd6af"
integrity sha512-mQC2b3XLDs6QCW+pDQDiyO/EdGZYOygE8s5N5rrzjSI4M3IejPE/JPndCBwRT9z982aqQNi6beWs1UeayrQxxA==
+"@emotion/utils@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.0.tgz#9716eaccbc6b5ded2ea5a90d65562609aab0f561"
+ integrity sha512-sn3WH53Kzpw8oQ5mgMmIzzyAaH2ZqFEbozVVBSYp538E06OSE6ytOp7pRAjNQR+Q/orwqdQYJSe2m3hCOeznkw==
+
"@emotion/weak-memoize@0.2.5", "@emotion/weak-memoize@^0.2.5":
version "0.2.5"
resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
@@ -3851,15 +4018,6 @@
resolved "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.3.2.tgz#43e470537b6ec2c23510c07812616d5aa27a17cd"
integrity sha512-A2e18XzPMrIh35nhIdE4uoqRzoIpEU5vZYuQN4S3Ee1zkGdYC27DP12pewbw/RLgPHzaE4kx/YqxMzebOpm0dA==
-"@loadable/component@^5.15.2":
- version "5.15.2"
- resolved "https://registry.npmjs.org/@loadable/component/-/component-5.15.2.tgz#b6c418d592e0a64f16b1d614ca9d3b1443d3b498"
- integrity sha512-ryFAZOX5P2vFkUdzaAtTG88IGnr9qxSdvLRvJySXcUA4B4xVWurUNADu3AnKPksxOZajljqTrDEDcYjeL4lvLw==
- dependencies:
- "@babel/runtime" "^7.7.7"
- hoist-non-react-statics "^3.3.1"
- react-is "^16.12.0"
-
"@mdx-js/loader@^1.6.22":
version "1.6.22"
resolved "https://registry.npmjs.org/@mdx-js/loader/-/loader-1.6.22.tgz#d9e8fe7f8185ff13c9c8639c048b123e30d322c4"
@@ -3904,6 +4062,59 @@
resolved "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz#219dfd89ae5b97a8801f015323ffa4b62f45718b"
integrity sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==
+"@motionone/animation@^10.12.0":
+ version "10.15.1"
+ resolved "https://registry.npmjs.org/@motionone/animation/-/animation-10.15.1.tgz#4a85596c31cbc5100ae8eb8b34c459fb0ccf6807"
+ integrity sha512-mZcJxLjHor+bhcPuIFErMDNyrdb2vJur8lSfMCsuCB4UyV8ILZLvK+t+pg56erv8ud9xQGK/1OGPt10agPrCyQ==
+ dependencies:
+ "@motionone/easing" "^10.15.1"
+ "@motionone/types" "^10.15.1"
+ "@motionone/utils" "^10.15.1"
+ tslib "^2.3.1"
+
+"@motionone/dom@10.12.0":
+ version "10.12.0"
+ resolved "https://registry.npmjs.org/@motionone/dom/-/dom-10.12.0.tgz#ae30827fd53219efca4e1150a5ff2165c28351ed"
+ integrity sha512-UdPTtLMAktHiqV0atOczNYyDd/d8Cf5fFsd1tua03PqTwwCe/6lwhLSQ8a7TbnQ5SN0gm44N1slBfj+ORIhrqw==
+ dependencies:
+ "@motionone/animation" "^10.12.0"
+ "@motionone/generators" "^10.12.0"
+ "@motionone/types" "^10.12.0"
+ "@motionone/utils" "^10.12.0"
+ hey-listen "^1.0.8"
+ tslib "^2.3.1"
+
+"@motionone/easing@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.npmjs.org/@motionone/easing/-/easing-10.15.1.tgz#95cf3adaef34da6deebb83940d8143ede3deb693"
+ integrity sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==
+ dependencies:
+ "@motionone/utils" "^10.15.1"
+ tslib "^2.3.1"
+
+"@motionone/generators@^10.12.0":
+ version "10.15.1"
+ resolved "https://registry.npmjs.org/@motionone/generators/-/generators-10.15.1.tgz#dc6abb11139d1bafe758a41c134d4c753a9b871c"
+ integrity sha512-67HLsvHJbw6cIbLA/o+gsm7h+6D4Sn7AUrB/GPxvujse1cGZ38F5H7DzoH7PhX+sjvtDnt2IhFYF2Zp1QTMKWQ==
+ dependencies:
+ "@motionone/types" "^10.15.1"
+ "@motionone/utils" "^10.15.1"
+ tslib "^2.3.1"
+
+"@motionone/types@^10.12.0", "@motionone/types@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.npmjs.org/@motionone/types/-/types-10.15.1.tgz#89441b54285012795cbba8612cbaa0fa420db3eb"
+ integrity sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==
+
+"@motionone/utils@^10.12.0", "@motionone/utils@^10.15.1":
+ version "10.15.1"
+ resolved "https://registry.npmjs.org/@motionone/utils/-/utils-10.15.1.tgz#6b5f51bde75be88b5411e084310299050368a438"
+ integrity sha512-p0YncgU+iklvYr/Dq4NobTRdAPv9PveRDUXabPEeOjBLSO/1FNB2phNTZxOxpi1/GZwYpAoECEa0Wam+nsmhSw==
+ dependencies:
+ "@motionone/types" "^10.15.1"
+ hey-listen "^1.0.8"
+ tslib "^2.3.1"
+
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@@ -6168,13 +6379,6 @@
resolved "https://registry.npmjs.org/@types/konami-code-js/-/konami-code-js-0.8.0.tgz#dd7b3bd23266d0d1c6bfcad870232b1a3788a883"
integrity sha512-7fhuggz5XuuQJxWhVL/5i3oQEQ80jjp3yvwaWlwNjFbM40BELnzV4qKeyPDLtjsHC9NG6E7XT22epH9eDZC3zg==
-"@types/loadable__component@^5.13.4":
- version "5.13.4"
- resolved "https://registry.npmjs.org/@types/loadable__component/-/loadable__component-5.13.4.tgz#a4646b2406b1283efac1a9d9485824a905b33d4a"
- integrity sha512-YhoCCxyuvP2XeZNbHbi8Wb9EMaUJuA2VGHxJffcQYrJKIKSkymJrhbzsf9y4zpTmr5pExAAEh5hbF628PAZ8Dg==
- dependencies:
- "@types/react" "*"
-
"@types/lodash@4.14.168":
version "4.14.168"
resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008"
@@ -6352,20 +6556,6 @@
dependencies:
"@types/react" "^17"
-"@types/react-helmet@^6.1.0":
- version "6.1.0"
- resolved "https://registry.npmjs.org/@types/react-helmet/-/react-helmet-6.1.0.tgz#af586ed685f4905e2adc7462d1d65ace52beee7a"
- integrity sha512-PYRoU1XJFOzQ3BHvWL1T8iDNbRjdMDJMT5hFmZKGbsq09kbSqJy61uwEpTrbTNWDopVphUT34zUSVLK9pjsgYQ==
- dependencies:
- "@types/react" "*"
-
-"@types/react-resize-detector@5.0.0":
- version "5.0.0"
- resolved "https://registry.npmjs.org/@types/react-resize-detector/-/react-resize-detector-5.0.0.tgz#18ac4e6d518581bec6345845b7f08232f4cca8a5"
- integrity sha512-JTqR0G+RcC6Guqi/JXQBq3jewflumUGd4fDUucmZN9L1d8TZuRHzDTtrmgYWrgLvRTBTV6FjegmLeV1UnrIuzw==
- dependencies:
- "@types/react" "*"
-
"@types/react-syntax-highlighter@11.0.5":
version "11.0.5"
resolved "https://registry.npmjs.org/@types/react-syntax-highlighter/-/react-syntax-highlighter-11.0.5.tgz#0d546261b4021e1f9d85b50401c0a42acb106087"
@@ -6380,6 +6570,13 @@
dependencies:
"@types/react" "*"
+"@types/react-test-renderer@^17.0.2":
+ version "17.0.2"
+ resolved "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-17.0.2.tgz#5f800a39b12ac8d2a2149e7e1885215bcf4edbbf"
+ integrity sha512-+F1KONQTBHDBBhbHuT2GNydeMpPuviduXIVJRB7Y4nma4NR5DrTJfMMZ+jbhEHbpwL+Uqhs1WXh4KHiyrtYTPg==
+ dependencies:
+ "@types/react" "^17"
+
"@types/react-transition-group@^4.4.0":
version "4.4.4"
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e"
@@ -7832,6 +8029,15 @@ babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.6.1, babel-plugin-macros@^2.8
cosmiconfig "^6.0.0"
resolve "^1.12.0"
+babel-plugin-macros@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
+ integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
+ cosmiconfig "^7.0.0"
+ resolve "^1.19.0"
+
babel-plugin-named-asset-import@^0.3.1:
version "0.3.7"
resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz#156cd55d3f1228a5765774340937afc8398067dd"
@@ -7945,10 +8151,10 @@ babel-preset-codecademy@6.0.1-alpha.042681.0:
babel-plugin-react-anonymous-display-name "0.0.1"
babel-plugin-transform-dynamic-import "^2.1.0"
-babel-preset-codecademy@6.0.1-alpha.8dfef4.0:
- version "6.0.1-alpha.8dfef4.0"
- resolved "https://registry.npmjs.org/babel-preset-codecademy/-/babel-preset-codecademy-6.0.1-alpha.8dfef4.0.tgz#df6dd339e58b45e7fecc65a97c9b58705141750d"
- integrity sha512-ysOx72Opnv5LwCq8zu9R6cjxmuTYWsBlHVFiDvRInFX3kNhUd/KW4HJJjId9L1T7NAlK7J+HVoeOSFXknn/bZA==
+babel-preset-codecademy@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/babel-preset-codecademy/-/babel-preset-codecademy-7.0.0.tgz#37a551726032315fe7588b9aa94741badc25059f"
+ integrity sha512-0tAjVN1r9voyz+GLrekJOUcnsRa5szHSx/p2A+Tgfqj96sIEQusPCoh+5oJLB2acGYN7nnvpD8mK6S7jrwhvAA==
dependencies:
"@babel/plugin-proposal-class-properties" "^7.12.1"
"@babel/plugin-proposal-decorators" "^7.12.1"
@@ -7963,7 +8169,7 @@ babel-preset-codecademy@6.0.1-alpha.8dfef4.0:
"@babel/plugin-transform-destructuring" "^7.12.1"
"@babel/plugin-transform-runtime" "^7.12.1"
"@babel/preset-env" "^7.12.1"
- "@babel/preset-react" "^7.12.1"
+ "@babel/preset-react" "^7.18.6"
babel-plugin-react-anonymous-display-name "0.0.1"
babel-plugin-transform-dynamic-import "^2.1.0"
@@ -10498,6 +10704,15 @@ dom-serializer@^1.0.1:
domhandler "^4.0.0"
entities "^2.0.0"
+dom-serializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
+ integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ entities "^4.2.0"
+
dom-walk@^0.1.0:
version "0.1.2"
resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84"
@@ -10518,7 +10733,7 @@ domelementtype@^2.0.1, domelementtype@^2.1.0:
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
-domelementtype@^2.2.0:
+domelementtype@^2.2.0, domelementtype@^2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
@@ -10544,13 +10759,6 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
-domhandler@^3.3.0:
- version "3.3.0"
- resolved "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
- integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
- dependencies:
- domelementtype "^2.0.1"
-
domhandler@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e"
@@ -10565,6 +10773,13 @@ domhandler@^4.2.0, domhandler@^4.3.1:
dependencies:
domelementtype "^2.2.0"
+domhandler@^5.0, domhandler@^5.0.1, domhandler@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
+ integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
+ dependencies:
+ domelementtype "^2.3.0"
+
domutils@^1.5.1, domutils@^1.7.0:
version "1.7.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
@@ -10573,15 +10788,6 @@ domutils@^1.5.1, domutils@^1.7.0:
dom-serializer "0"
domelementtype "1"
-domutils@^2.4.2:
- version "2.4.4"
- resolved "https://registry.npmjs.org/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3"
- integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==
- dependencies:
- dom-serializer "^1.0.1"
- domelementtype "^2.0.1"
- domhandler "^4.0.0"
-
domutils@^2.8.0:
version "2.8.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
@@ -10591,6 +10797,15 @@ domutils@^2.8.0:
domelementtype "^2.2.0"
domhandler "^4.2.0"
+domutils@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c"
+ integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q==
+ dependencies:
+ dom-serializer "^2.0.0"
+ domelementtype "^2.3.0"
+ domhandler "^5.0.1"
+
dot-case@^3.0.4:
version "3.0.4"
resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
@@ -10853,6 +11068,11 @@ entities@^2.0.0:
resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+entities@^4.2.0:
+ version "4.4.0"
+ resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174"
+ integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
+
entities@^4.3.0:
version "4.3.0"
resolved "https://registry.npmjs.org/entities/-/entities-4.3.0.tgz#62915f08d67353bb4eb67e3d62641a4059aec656"
@@ -12088,23 +12308,24 @@ fragment-cache@^0.2.1:
dependencies:
map-cache "^0.2.2"
-framer-motion@^4.1.17:
- version "4.1.17"
- resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-4.1.17.tgz#4029469252a62ea599902e5a92b537120cc89721"
- integrity sha512-thx1wvKzblzbs0XaK2X0G1JuwIdARcoNOW7VVwjO8BUltzXPyONGAElLu6CiCScsOQRI7FIk/45YTFtJw5Yozw==
+framer-motion@^6.5.1:
+ version "6.5.1"
+ resolved "https://registry.npmjs.org/framer-motion/-/framer-motion-6.5.1.tgz#802448a16a6eb764124bf36d8cbdfa6dd6b931a7"
+ integrity sha512-o1BGqqposwi7cgDrtg0dNONhkmPsUFDaLcKXigzuTFC5x58mE8iyTazxSudFzmT6MEyJKfjjU8ItoMe3W+3fiw==
dependencies:
- framesync "5.3.0"
+ "@motionone/dom" "10.12.0"
+ framesync "6.0.1"
hey-listen "^1.0.8"
- popmotion "9.3.6"
- style-value-types "4.1.4"
+ popmotion "11.0.3"
+ style-value-types "5.0.0"
tslib "^2.1.0"
optionalDependencies:
"@emotion/is-prop-valid" "^0.8.2"
-framesync@5.3.0:
- version "5.3.0"
- resolved "https://registry.npmjs.org/framesync/-/framesync-5.3.0.tgz#0ecfc955e8f5a6ddc8fdb0cc024070947e1a0d9b"
- integrity sha512-oc5m68HDO/tuK2blj7ZcdEBRx3p1PjrgHazL8GYEpvULhrtGIFbQArN6cQS2QhW8mitffaB+VYzMjDqBxxQeoA==
+framesync@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/framesync/-/framesync-6.0.1.tgz#5e32fc01f1c42b39c654c35b16440e07a25d6f20"
+ integrity sha512-fUY88kXvGiIItgNC7wcTOl0SNRCVXMKSWW2Yzfmn7EKNc+MpCzcz9DhdHcdjbrtN3c6R4H5dTY2jiCpPdysEjA==
dependencies:
tslib "^2.1.0"
@@ -12569,7 +12790,7 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
once "^1.3.0"
path-is-absolute "^1.0.0"
-glob@^7.1.2:
+glob@^7.1.2, glob@^7.2.0:
version "7.2.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -13027,11 +13248,6 @@ hastscript@^6.0.0:
property-information "^5.0.0"
space-separated-tokens "^1.0.0"
-he@0.5.0:
- version "0.5.0"
- resolved "https://registry.npmjs.org/he/-/he-0.5.0.tgz#2c05ffaef90b68e860f3fd2b54ef580989277ee2"
- integrity sha1-LAX/rvkLaOhg8/0rVO9YCYknfuI=
-
he@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
@@ -13166,15 +13382,14 @@ html-tags@^3.1.0:
resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.1.0.tgz#7b5e6f7e665e9fb41f30007ed9e0d41e97fb2140"
integrity sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==
-html-to-react@^1.4.2:
- version "1.4.5"
- resolved "https://registry.npmjs.org/html-to-react/-/html-to-react-1.4.5.tgz#59091c11021d1ef315ef738460abb6a4a41fe1ce"
- integrity sha512-KONZUDFPg5OodWaQu2ymfkDmU0JA7zB1iPfvyHehTmMUZnk0DS7/TyCMTzsLH6b4BvxX15g88qZCXFhJWktsmA==
+html-to-react@^1.5.0:
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/html-to-react/-/html-to-react-1.5.0.tgz#6e0cf47ae1b091ba2f28a3832389fbce4d199ccc"
+ integrity sha512-tjihXBgaJZRRYzmkrJZ/Qf9jFayilFYcb+sJxXXE2BVLk2XsNrGeuNCVvhXmvREULZb9dz6NFTBC96DTR/lQCQ==
dependencies:
- domhandler "^3.3.0"
- htmlparser2 "^5.0"
+ domhandler "^5.0"
+ htmlparser2 "^8.0"
lodash.camelcase "^4.3.0"
- ramda "^0.27.1"
html-void-elements@^1.0.0:
version "1.0.5"
@@ -13208,15 +13423,15 @@ htmlparser2@^3.10.1:
inherits "^2.0.1"
readable-stream "^3.1.1"
-htmlparser2@^5.0:
- version "5.0.1"
- resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-5.0.1.tgz#7daa6fc3e35d6107ac95a4fc08781f091664f6e7"
- integrity sha512-vKZZra6CSe9qsJzh0BjBGXo8dvzNsq/oGvsjfRdOrrryfeD9UOBEEQdeoqCRmKZchF5h2zOBMQ6YuQ0uRUmdbQ==
+htmlparser2@^8.0:
+ version "8.0.1"
+ resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.1.tgz#abaa985474fcefe269bc761a779b544d7196d010"
+ integrity sha512-4lVbmc1diZC7GUJQtRQ5yBAeUCL1exyMwmForWkRLnwyzWBFxN633SALPMGYaWZvKe9j1pRZJpauvmxENSp/EA==
dependencies:
- domelementtype "^2.0.1"
- domhandler "^3.3.0"
- domutils "^2.4.2"
- entities "^2.0.0"
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ domutils "^3.0.1"
+ entities "^4.3.0"
http-cache-semantics@^4.1.0:
version "4.1.0"
@@ -15378,6 +15593,11 @@ json5@^2.2.1:
resolved "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+json5@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
jsonc-parser@3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22"
@@ -18116,14 +18336,14 @@ polished@^4.0.5, polished@^4.1.2:
dependencies:
"@babel/runtime" "^7.13.17"
-popmotion@9.3.6:
- version "9.3.6"
- resolved "https://registry.npmjs.org/popmotion/-/popmotion-9.3.6.tgz#b5236fa28f242aff3871b9e23721f093133248d1"
- integrity sha512-ZTbXiu6zIggXzIliMi8LGxXBF5ST+wkpXGEjeTUDUOCdSQ356hij/xjeUdv0F8zCQNeqB1+PR5/BB+gC+QLAPw==
+popmotion@11.0.3:
+ version "11.0.3"
+ resolved "https://registry.npmjs.org/popmotion/-/popmotion-11.0.3.tgz#565c5f6590bbcddab7a33a074bb2ba97e24b0cc9"
+ integrity sha512-Y55FLdj3UxkR7Vl3s7Qr4e9m0onSnP8W7d/xQLsoJM40vs6UKHFdygs6SWryasTZYqugMjm3BepCF4CWXDiHgA==
dependencies:
- framesync "5.3.0"
+ framesync "6.0.1"
hey-listen "^1.0.8"
- style-value-types "4.1.4"
+ style-value-types "5.0.0"
tslib "^2.1.0"
portfinder@^1.0.28:
@@ -19142,21 +19362,11 @@ quick-lru@^5.1.1:
resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-raf-schd@^4.0.2:
- version "4.0.3"
- resolved "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz#5d6c34ef46f8b2a0e880a8fcdb743efc5bfdbc1a"
- integrity sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==
-
ramda@^0.21.0:
version "0.21.0"
resolved "https://registry.npmjs.org/ramda/-/ramda-0.21.0.tgz#a001abedb3ff61077d4ff1d577d44de77e8d0a35"
integrity sha1-oAGr7bP/YQd9T/HVd9RN536NCjU=
-ramda@^0.27.1:
- version "0.27.1"
- resolved "https://registry.npmjs.org/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9"
- integrity sha512-PgIdVpn5y5Yns8vqb8FzBUEYn98V3xcPgawAkkgj0YJ0qDsnHCiNmZYfOGMgOvoB0eWFLpYbhxUR3mxfDIMvpw==
-
randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -19275,7 +19485,7 @@ react-docgen@^5.0.0:
node-dir "^0.1.10"
strip-indent "^3.0.0"
-react-dom@17.0.2, react-dom@^17.0.2:
+react-dom@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23"
integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==
@@ -19388,16 +19598,16 @@ react-inspector@^5.1.0:
is-dom "^1.0.0"
prop-types "^15.0.0"
-react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1:
- version "16.13.1"
- resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
- integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-
"react-is@^16.12.0 || ^17.0.0", react-is@^17.0.1, react-is@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
+react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1:
+ version "16.13.1"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
+
react-is@^18.0.0:
version "18.1.0"
resolved "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz#61aaed3096d30eacf2a2127118b5b41387d32a67"
@@ -19472,15 +19682,12 @@ react-remove-scroll@^2.4.0:
use-callback-ref "^1.2.3"
use-sidecar "^1.0.1"
-react-resize-detector@5.2.0:
- version "5.2.0"
- resolved "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-5.2.0.tgz#992083834432308c551a8251a2c52306d9d16718"
- integrity sha512-PQAc03J2eyhvaiWgEdQ8+bKbbyGJzLEr70KuivBd1IEmP/iewNakLUMkxm6MWnDqsRPty85pioyg8MvGb0qC8A==
+react-resize-detector@7.1.2:
+ version "7.1.2"
+ resolved "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-7.1.2.tgz#8ef975dd8c3d56f9a5160ac382ef7136dcd2d86c"
+ integrity sha512-zXnPJ2m8+6oq9Nn8zsep/orts9vQv3elrpA+R8XTcW7DVVUJ9vwDwMXaBtykAYjMnkCIaOoK9vObyR7ZgFNlOw==
dependencies:
- lodash "^4.17.20"
- prop-types "^15.7.2"
- raf-schd "^4.0.2"
- resize-observer-polyfill "^1.5.1"
+ lodash "^4.17.21"
react-select@^5.2.2:
version "5.2.2"
@@ -19538,7 +19745,7 @@ react-syntax-highlighter@^13.5.3:
prismjs "^1.21.0"
refractor "^3.1.0"
-react-test-renderer@17.0.2, react-test-renderer@^17.0.2:
+react-test-renderer@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-17.0.2.tgz#4cd4ae5ef1ad5670fc0ef776e8cc7e1231d9866c"
integrity sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==
@@ -19567,10 +19774,10 @@ react-transition-group@^4.3.0:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react-truncate-markup@^5.1.0:
- version "5.1.0"
- resolved "https://registry.npmjs.org/react-truncate-markup/-/react-truncate-markup-5.1.0.tgz#632f263a7d70925ab6368d5620ef32f066c2857a"
- integrity sha512-TTp8gj63w/o5jQC7HnLMEeAHp9jjSxFlA5lzklvPzcSubcurkEI4g0YjW67YG1yNAJHqQwCadj4mTUvz58S1wQ==
+react-truncate-markup@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/react-truncate-markup/-/react-truncate-markup-5.1.2.tgz#bf09785854d95e20028b257831ffdf32d08c8fa7"
+ integrity sha512-eEq6T8Rs+wz98cRYzQECGFNBfXwRYraLg/kz52f6DRBKmzxqB+GYLeDkVe/zrC+2vh5AEwM6nSYFvDWEBljd0w==
dependencies:
line-height "0.3.1"
memoize-one "^5.1.1"
@@ -19602,7 +19809,7 @@ react-use@15.3.8, react-use@^15.3.8:
ts-easing "^0.2.0"
tslib "^2.0.0"
-react@17.0.2, react@^17.0.2:
+react@^17.0.2:
version "17.0.2"
resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
@@ -19870,6 +20077,11 @@ regenerator-runtime@^0.13.10:
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee"
integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==
+regenerator-runtime@^0.13.11:
+ version "0.13.11"
+ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7:
version "0.13.7"
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
@@ -20428,13 +20640,12 @@ sane@^4.0.3:
minimist "^1.1.1"
walker "~1.0.5"
-sanitize-markdown@^2.6.6:
- version "2.6.6"
- resolved "https://registry.npmjs.org/sanitize-markdown/-/sanitize-markdown-2.6.6.tgz#7d1b1e9d13601403b86c00be627040f5a934cb1e"
- integrity sha512-YFS/3rzUnqtizs65vTV7d5c7dqFQPqhXRyM6/89zVzK2CHjeMjxiRxHE48x5EkxRuvO5Qb978zSNTmasTYO1Zw==
+sanitize-markdown@^2.6.7:
+ version "2.6.7"
+ resolved "https://registry.npmjs.org/sanitize-markdown/-/sanitize-markdown-2.6.7.tgz#335d7627fe15339cf5be5a0ae78590c097007e33"
+ integrity sha512-w0exIpQ6Zk/q4yUZNgYcxz5sO1o+y3zYeJlHXp+AGKUPOy9wUoKUpu6/+qVlW6oGMvQ72N/6Gx8q/tZG/CKxSA==
dependencies:
assignment "2.0.0"
- he "0.5.0"
sass-graph@2.2.5:
version "2.2.5"
@@ -21701,10 +21912,10 @@ style-to-object@0.3.0, style-to-object@^0.3.0:
dependencies:
inline-style-parser "0.1.1"
-style-value-types@4.1.4:
- version "4.1.4"
- resolved "https://registry.npmjs.org/style-value-types/-/style-value-types-4.1.4.tgz#80f37cb4fb024d6394087403dfb275e8bb627e75"
- integrity sha512-LCJL6tB+vPSUoxgUBt9juXIlNJHtBMy8jkXzUJSBzeHWdBu6lhzHqCvLVkXFGsFIlNa2ln1sQHya/gzaFmB2Lg==
+style-value-types@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/style-value-types/-/style-value-types-5.0.0.tgz#76c35f0e579843d523187989da866729411fc8ad"
+ integrity sha512-08yq36Ikn4kx4YU6RD7jWEv27v4V+PUsOGa4n/as8Et3CuODMJQ00ENeAVXAeydX4Z2j1XHZF1K2sX4mGl18fA==
dependencies:
hey-listen "^1.0.8"
tslib "^2.1.0"
@@ -21731,6 +21942,11 @@ stylis@4.0.13, stylis@^4.0.3, stylis@^4.0.6:
resolved "https://registry.npmjs.org/stylis/-/stylis-4.0.13.tgz#f5db332e376d13cc84ecfe5dace9a2a51d954c91"
integrity sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==
+stylis@4.1.3:
+ version "4.1.3"
+ resolved "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz#fd2fbe79f5fed17c55269e16ed8da14c84d069f7"
+ integrity sha512-GP6WDNWf+o403jrEp9c5jibKavrtLW+/qYGhFxFrG8maXhwTBI7gLLhiBb0o7uFccWN+EOS9aMO6cGHWAO07OA==
+
stylus-loader@^6.2.0:
version "6.2.0"
resolved "https://registry.npmjs.org/stylus-loader/-/stylus-loader-6.2.0.tgz#0ba499e744e7fb9d9b3977784c8639728a7ced8c"