{paymentMethod && paymentMethod.type === 'credit_card' ? (
diff --git a/packages/manager/src/components/RenderGuard.tsx b/packages/manager/src/components/RenderGuard.tsx
index eb0a5e2db14..2d7ca62f0a9 100644
--- a/packages/manager/src/components/RenderGuard.tsx
+++ b/packages/manager/src/components/RenderGuard.tsx
@@ -1,4 +1,3 @@
-import { WithTheme, withTheme } from '@mui/styles';
import { equals } from 'ramda';
import * as React from 'react';
@@ -12,9 +11,7 @@ export interface RenderGuardProps {
export const RenderGuard = (
Component: React.ComponentType
) => {
- class ComponentWithRenderGuard extends React.Component<
- RenderGuardProps & WithTheme
- > {
+ class ComponentWithRenderGuard extends React.Component
{
render() {
// cast of this.props to any needed because of
// https://github.com/Microsoft/TypeScript/issues/17281
@@ -25,15 +22,11 @@ export const RenderGuard =
(
return ;
}
- shouldComponentUpdate(nextProps: P & RenderGuardProps & WithTheme) {
+ shouldComponentUpdate(nextProps: P & RenderGuardProps) {
if (Array.isArray(this.props.updateFor)) {
// don't update if the values of the updateFor Array are equal
// this is a deep comparison
- return (
- !equals(this.props.updateFor, nextProps.updateFor) ||
- this.props.theme.name !== nextProps.theme.name ||
- this.props.theme.spacing(1) !== nextProps.theme.spacing(1)
- );
+ return !equals(this.props.updateFor, nextProps.updateFor);
}
// if updateFor isn't provided, always update (this is React's default behavior)
return true;
@@ -42,7 +35,5 @@ export const RenderGuard =
(
static displayName = `WithRenderGuard(${getDisplayName(Component)})`;
}
- return withTheme(ComponentWithRenderGuard) as React.ComponentType<
- P & RenderGuardProps
- >;
+ return ComponentWithRenderGuard as React.ComponentType
;
};
diff --git a/packages/manager/src/components/VerticalLinearStepper/VerticalLinearStepper.tsx b/packages/manager/src/components/VerticalLinearStepper/VerticalLinearStepper.tsx
index 1cc903dd39f..99f9424c9e1 100644
--- a/packages/manager/src/components/VerticalLinearStepper/VerticalLinearStepper.tsx
+++ b/packages/manager/src/components/VerticalLinearStepper/VerticalLinearStepper.tsx
@@ -4,11 +4,11 @@ import {
StepContent,
StepLabel,
Stepper,
+ useTheme,
} from '@mui/material';
import Box from '@mui/material/Box';
import { Theme } from '@mui/material/styles';
import useMediaQuery from '@mui/material/useMediaQuery';
-import { useTheme } from '@mui/styles';
import React, { useState } from 'react';
import { convertToKebabCase } from 'src/utilities/convertToKebobCase';
diff --git a/packages/manager/src/containers/SummaryPanels.styles.ts b/packages/manager/src/containers/SummaryPanels.styles.ts
deleted file mode 100644
index d39d0227dcf..00000000000
--- a/packages/manager/src/containers/SummaryPanels.styles.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-import { Theme } from '@mui/material/styles';
-import { WithStyles, createStyles } from '@mui/styles';
-
-type ClassNames =
- | 'region'
- | 'regionInner'
- | 'root'
- | 'section'
- | 'summarySection'
- | 'title'
- | 'volumeLink';
-
-export type StyleProps = WithStyles;
-
-const summaryPanelStyles = (theme: Theme) =>
- createStyles({
- region: {
- [theme.breakpoints.between('sm', 'lg')]: {
- display: 'flex',
- flexBasis: '100%',
- maxWidth: '100%',
- },
- },
- regionInner: {
- [theme.breakpoints.only('xs')]: {
- padding: '0 8px !important',
- },
- [theme.breakpoints.up('lg')]: {
- '&:first-of-type': {
- padding: '8px 8px 0 8px !important',
- },
- '&:last-of-type': {
- padding: '0 8px !important',
- },
- },
- },
- root: {
- [theme.breakpoints.up('lg')]: {
- padding: theme.spacing(1),
- paddingRight: 0,
- },
- [theme.breakpoints.up('md')]: {
- paddingLeft: theme.spacing(1),
- paddingTop: 0,
- },
- },
- section: {
- marginBottom: theme.spacing(1),
- ...theme.typography.body1,
- '& .dif': {
- '& .MuiChip-root': {
- position: 'absolute',
- right: -10,
- top: '-4px',
- },
- position: 'relative',
- width: 'auto',
- },
- },
- summarySection: {
- height: '93%',
- marginBottom: theme.spacing(2),
- minHeight: '160px',
- padding: theme.spacing(2.5),
- },
- title: {
- marginBottom: theme.spacing(2),
- },
- volumeLink: {
- '&:hover, &:focus': {
- textDecoration: 'underline',
- },
- color: theme.palette.primary.main,
- fontSize: '1rem',
- },
- });
-
-export default summaryPanelStyles;
diff --git a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/BillingSummary.tsx b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/BillingSummary.tsx
index 17204083b33..3bd4de81947 100644
--- a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/BillingSummary.tsx
+++ b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/BillingSummary.tsx
@@ -1,9 +1,8 @@
import { PaymentMethod } from '@linode/api-v4';
import { ActivePromotion } from '@linode/api-v4/lib/account/types';
-import { GridSize } from '@mui/material/Grid';
import Grid from '@mui/material/Unstable_Grid2';
-import { Breakpoint } from '@mui/material/styles';
import { useTheme } from '@mui/material/styles';
+import { Breakpoint } from '@mui/material/styles';
import * as React from 'react';
import { useHistory, useLocation, useRouteMatch } from 'react-router-dom';
@@ -23,6 +22,8 @@ import PaymentDrawer from './PaymentDrawer';
import PromoDialog from './PromoDialog';
import { PromoDisplay } from './PromoDisplay';
+import type { GridSize } from '@mui/material';
+
interface BillingSummaryProps {
balance: number;
balanceUninvoiced: number;
diff --git a/packages/manager/src/features/Help/Panels/PopularPosts.tsx b/packages/manager/src/features/Help/Panels/PopularPosts.tsx
index fcd469d1c70..96d2d47feac 100644
--- a/packages/manager/src/features/Help/Panels/PopularPosts.tsx
+++ b/packages/manager/src/features/Help/Panels/PopularPosts.tsx
@@ -1,18 +1,16 @@
import Grid from '@mui/material/Unstable_Grid2';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
import * as React from 'react';
+import { makeStyles } from 'tss-react/mui';
import { Link } from 'src/components/Link';
import { Paper } from 'src/components/Paper';
import { Typography } from 'src/components/Typography';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
post: {
marginBottom: theme.spacing(0.5),
- ...theme.typography.body1,
},
-
postTitle: {
marginBottom: theme.spacing(2),
},
@@ -31,7 +29,7 @@ const useStyles = makeStyles((theme: Theme) => ({
}));
export const PopularPosts = () => {
- const classes = useStyles();
+ const { classes } = useStyles();
const renderPopularDocs = () => {
return (
diff --git a/packages/manager/src/features/Images/ImageUpload.tsx b/packages/manager/src/features/Images/ImageUpload.tsx
index f8c9a1f6094..141b21306e5 100644
--- a/packages/manager/src/features/Images/ImageUpload.tsx
+++ b/packages/manager/src/features/Images/ImageUpload.tsx
@@ -1,6 +1,6 @@
import { APIError } from '@linode/api-v4/lib/types';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import * as React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useHistory } from 'react-router-dom';
@@ -36,7 +36,7 @@ import { wrapInQuotes } from 'src/utilities/stringUtils';
import { EUAgreementCheckbox } from '../Account/Agreements/EUAgreementCheckbox';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
browseFilesButton: {
marginLeft: '1rem',
},
@@ -108,7 +108,7 @@ export const ImageUpload: React.FC = (props) => {
const { data: agreements } = useAccountAgreements();
const { mutateAsync: updateAccountAgreements } = useMutateAccountAgreements();
- const classes = useStyles();
+ const { classes } = useStyles();
const regions = useRegionsQuery().data ?? [];
const dispatch: Dispatch = useDispatch();
const { push } = useHistory();
diff --git a/packages/manager/src/features/Images/ImagesCreate/CreateImageTab.tsx b/packages/manager/src/features/Images/ImagesCreate/CreateImageTab.tsx
index 608d5580ba8..d8fe8d48351 100644
--- a/packages/manager/src/features/Images/ImagesCreate/CreateImageTab.tsx
+++ b/packages/manager/src/features/Images/ImagesCreate/CreateImageTab.tsx
@@ -1,7 +1,7 @@
import { Disk, Linode, getLinodeDisks } from '@linode/api-v4/lib/linodes';
import { APIError } from '@linode/api-v4/lib/types';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import { useSnackbar } from 'notistack';
import { equals } from 'ramda';
import * as React from 'react';
@@ -24,7 +24,7 @@ import { useGrants, useProfile } from 'src/queries/profile';
import { getAPIErrorOrDefault } from 'src/utilities/errorUtils';
import { getAPIErrorFor } from 'src/utilities/getAPIErrorFor';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
buttonGroup: {
marginBottom: theme.spacing(2),
marginTop: theme.spacing(3),
@@ -92,7 +92,7 @@ export const CreateImageTab: React.FC = (props) => {
label,
} = props;
- const classes = useStyles();
+ const { classes } = useStyles();
const { enqueueSnackbar } = useSnackbar();
const { push } = useHistory();
diff --git a/packages/manager/src/features/Images/ImagesDrawer.tsx b/packages/manager/src/features/Images/ImagesDrawer.tsx
index 542a7c26782..a7078ea8184 100644
--- a/packages/manager/src/features/Images/ImagesDrawer.tsx
+++ b/packages/manager/src/features/Images/ImagesDrawer.tsx
@@ -1,7 +1,7 @@
import { Disk, getLinodeDisks } from '@linode/api-v4/lib/linodes';
import { APIError } from '@linode/api-v4/lib/types';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import { useSnackbar } from 'notistack';
import { equals } from 'ramda';
import * as React from 'react';
@@ -25,7 +25,7 @@ import { getAPIErrorFor } from 'src/utilities/getAPIErrorFor';
import { useImageAndLinodeGrantCheck } from './utils';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
actionPanel: {
marginTop: theme.spacing(2),
},
@@ -94,7 +94,7 @@ export const ImagesDrawer = (props: CombinedProps) => {
selectedLinode,
} = props;
- const classes = useStyles();
+ const { classes } = useStyles();
const { enqueueSnackbar } = useSnackbar();
const history = useHistory();
const {
diff --git a/packages/manager/src/features/Images/ImagesLanding.tsx b/packages/manager/src/features/Images/ImagesLanding.tsx
index c7960d2d840..d17f0bae2a2 100644
--- a/packages/manager/src/features/Images/ImagesLanding.tsx
+++ b/packages/manager/src/features/Images/ImagesLanding.tsx
@@ -1,7 +1,7 @@
import { Event, Image, ImageStatus } from '@linode/api-v4';
import { APIError } from '@linode/api-v4/lib/types';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import produce from 'immer';
import { useSnackbar } from 'notistack';
import * as React from 'react';
@@ -45,7 +45,7 @@ import { Handlers as ImageHandlers } from './ImagesActionMenu';
import { DrawerMode, ImagesDrawer } from './ImagesDrawer';
import { ImagesLandingEmptyState } from './ImagesLandingEmptyState';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
imageTable: {
marginBottom: theme.spacing(3),
padding: 0,
@@ -97,7 +97,7 @@ const defaultDialogState = {
};
export const ImagesLanding: React.FC = () => {
- const classes = useStyles();
+ const { classes } = useStyles();
const history = useHistory();
const { enqueueSnackbar } = useSnackbar();
diff --git a/packages/manager/src/features/Kubernetes/ClusterList/KubernetesClusterRow.tsx b/packages/manager/src/features/Kubernetes/ClusterList/KubernetesClusterRow.tsx
index 2e0ad5ddee7..8ec0d9a57d0 100644
--- a/packages/manager/src/features/Kubernetes/ClusterList/KubernetesClusterRow.tsx
+++ b/packages/manager/src/features/Kubernetes/ClusterList/KubernetesClusterRow.tsx
@@ -1,6 +1,6 @@
import { KubeNodePoolResponse, KubernetesCluster } from '@linode/api-v4';
import Grid from '@mui/material/Unstable_Grid2';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import * as React from 'react';
import { Link } from 'react-router-dom';
@@ -23,7 +23,7 @@ import {
} from '../kubeUtils';
import { ClusterActionMenu } from './ClusterActionMenu';
-const useStyles = makeStyles(() => ({
+const useStyles = makeStyles()(() => ({
clusterRow: {
'&:before': {
display: 'none',
@@ -62,7 +62,7 @@ export interface Props {
export const KubernetesClusterRow = (props: Props) => {
const { cluster, openDeleteDialog, openUpgradeDialog } = props;
- const classes = useStyles();
+ const { classes } = useStyles();
const { data: versions } = useKubernetesVersionQuery();
const { data: pools } = useAllKubernetesNodePoolQuery(cluster.id);
diff --git a/packages/manager/src/features/Kubernetes/KubeCheckoutBar/NodePoolSummary.tsx b/packages/manager/src/features/Kubernetes/KubeCheckoutBar/NodePoolSummary.tsx
index fa45858b89d..6d9f5a7923f 100644
--- a/packages/manager/src/features/Kubernetes/KubeCheckoutBar/NodePoolSummary.tsx
+++ b/packages/manager/src/features/Kubernetes/KubeCheckoutBar/NodePoolSummary.tsx
@@ -1,6 +1,6 @@
import Close from '@mui/icons-material/Close';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import * as React from 'react';
import { Box } from 'src/components/Box';
@@ -12,7 +12,7 @@ import { Typography } from 'src/components/Typography';
import { ExtendedType } from 'src/utilities/extendType';
import { pluralize } from 'src/utilities/pluralize';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
button: {
'&:hover': {
color: '#6e6e6e',
@@ -56,7 +56,7 @@ export interface Props {
}
export const NodePoolSummary: React.FC = (props) => {
- const classes = useStyles();
+ const { classes } = useStyles();
const { nodeCount, onRemove, poolType, price, updateNodeCount } = props;
// This should never happen but TS wants us to account for the situation
diff --git a/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeClusterSpecs.tsx b/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeClusterSpecs.tsx
index 20f5eb0d040..ab3bab1a197 100644
--- a/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeClusterSpecs.tsx
+++ b/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeClusterSpecs.tsx
@@ -1,7 +1,7 @@
import { KubernetesCluster } from '@linode/api-v4';
import Grid from '@mui/material/Unstable_Grid2';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
+import { makeStyles } from 'tss-react/mui';
import * as React from 'react';
import { Typography } from 'src/components/Typography';
@@ -20,7 +20,7 @@ interface Props {
cluster: KubernetesCluster;
}
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
iconTextOuter: {
flexBasis: '72%',
minWidth: 115,
@@ -49,7 +49,7 @@ const useStyles = makeStyles((theme: Theme) => ({
export const KubeClusterSpecs = (props: Props) => {
const { cluster } = props;
- const classes = useStyles();
+ const { classes } = useStyles();
const { data: regions } = useRegionsQuery();
const { data: pools } = useAllKubernetesNodePoolQuery(cluster.id);
diff --git a/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigDisplay.tsx b/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigDisplay.tsx
index 3c539c009b5..5ec6cfbadb2 100644
--- a/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigDisplay.tsx
+++ b/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigDisplay.tsx
@@ -1,8 +1,7 @@
import { Box } from 'src/components/Box';
import Grid from '@mui/material/Unstable_Grid2';
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
-import classNames from 'classnames';
+import { makeStyles } from 'tss-react/mui';
import { useSnackbar } from 'notistack';
import * as React from 'react';
@@ -25,7 +24,7 @@ interface Props {
setResetKubeConfigDialogOpen: (open: boolean) => void;
}
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
disabled: {
'& g': {
stroke: theme.palette.text.secondary,
@@ -95,7 +94,7 @@ export const KubeConfigDisplay = (props: Props) => {
} = props;
const { enqueueSnackbar } = useSnackbar();
- const classes = useStyles();
+ const { classes, cx } = useStyles();
const { refetch } = useKubenetesKubeConfigQuery(clusterId);
@@ -171,13 +170,13 @@ export const KubeConfigDisplay = (props: Props) => {
onClick={() => setResetKubeConfigDialogOpen(true)}
>
({
+const useStyles = makeStyles()((theme: Theme) => ({
icon: {
color: '#3683dc',
},
@@ -39,7 +39,7 @@ interface Props {
}
export const KubeConfigDrawer = (props: Props) => {
- const classes = useStyles();
+ const { classes } = useStyles();
const { closeDrawer, clusterId, clusterLabel, open } = props;
const {
diff --git a/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigPanel.tsx b/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigPanel.tsx
index ce1b53d6209..f0b02f2ae18 100644
--- a/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigPanel.tsx
+++ b/packages/manager/src/features/Kubernetes/KubernetesClusterDetail/KubeConfigPanel.tsx
@@ -1,6 +1,5 @@
import { Theme } from '@mui/material/styles';
-import { makeStyles } from '@mui/styles';
-import classNames from 'classnames';
+import { makeStyles } from 'tss-react/mui';
import { useSnackbar } from 'notistack';
import * as React from 'react';
@@ -15,7 +14,7 @@ import { getAPIErrorOrDefault } from 'src/utilities/errorUtils';
import { KubeConfigDrawer } from './KubeConfigDrawer';
-const useStyles = makeStyles((theme: Theme) => ({
+const useStyles = makeStyles()((theme: Theme) => ({
button: {
display: 'block',
fontSize: '0.9rem',
@@ -61,7 +60,7 @@ interface Props {
export const KubeConfigPanel = (props: Props) => {
const { clusterID, clusterLabel } = props;
- const classes = useStyles();
+ const { classes, cx } = useStyles();
const [drawerOpen, setDrawerOpen] = React.useState(false);
const { refetch } = useKubenetesKubeConfigQuery(clusterID);
const { enqueueSnackbar } = useSnackbar();
@@ -104,7 +103,7 @@ export const KubeConfigPanel = (props: Props) => {