CSS-модули
CSS-модули — это система, которая позволяет писать CSS таким образом, чтобы имена классов были локальными по умолчанию. Это означает, что CSS, написанный в одном модуле, не будет конфликтовать с CSS, написанным в другом модуле, даже если они используют одинаковые имена классов.
.card {  height: 420px;  width: 420px;  border: 1px solid gray;  border-radius: 8px;}
.container {  display: flex;  flex-direction: column;  gap: 8px;}
.image {  height: 120px;  width: 100%;}
.title {  font-size: 20px;  font-weight: bold;}
.description {  font-size: 18px;}/* props variant */.v {  &-primary {    background-color: white;  }
  &-secondary {    background-color: aliceblue;  }}
/* props size */.s {  &-small {    padding: 4px;  }
  &-middle {    padding: 8px;  }
  &-large {    padding: 12px;  }}Подключение CSS-модулей
Заголовок раздела «Подключение CSS-модулей»- Директорияproduct-card/- product-card.tsx — компонент
- product-card.module.scss — стили компонента
 
import { FC } from "react";import styles from "./product-card.module.scss";
interface ProductCardProps {}
export const ProductCard: FC<ProductCardProps> = () => {  ...  return (    <div className={styles.card}>      ...    </div>)}Для подключения нескольких классов к одному элементу нужно использовать библиотеку clsx:
import { FC } from "react";import styles from "./product-card.module.scss";import clsx from "clsx";
interface ProductCardProps {  ...  variant?: "primary" | "secondary";  size?: "small" | "medium" | "large";}
export const ProductCard: FC<ProductCardProps> = ({  ...  variant = "primary",  size = "medium",}) => {  return (    <div className={clsx(styles.card, styles[`v-${variant}`]), styles[`s-${size}`])}>    ...    </div>  );};