/
dedaMazai
/
reactGoodPattern
Обзор
Документация
Войти
/
dedaMazai
/
reactGoodPattern
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
moduleFederation/container/src/shared/ui/Stack/Flex/Flex.tsx
81 строка
2 KB
Andrey Chipizubov
add microFronts
25 май 2023, 01:05
25 май 2023, 01:05
ec973d2
Код
Авторство
О чём код?
import { DetailedHTMLProps, HTMLAttributes, ReactNode } from "react"; import { classNames, Mods } from "@/shared/lib/classNames/classNames"; import cls from "./Flex.module.scss"; export type FlexJustify = "start" | "center" | "end" | "between" | "around"; export type FlexAlign = "start" | "center" | "end"; export type FlexDirection = "row" | "column"; export type FlexGap = "2" |"4" | "8" | "16" | "24" | "32"; type DivProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>; export interface FlexProps extends DivProps { className?: string; children: ReactNode; justify?: FlexJustify; align?: FlexAlign; direction?: FlexDirection; gap?: FlexGap; max?: boolean; wrap?: boolean; } const justifyClasses: Record<FlexJustify, string> = { start: cls.justifyStart, center: cls.justifyCenter, end: cls.justifyEnd, between: cls.justifyBetween, around: cls.justifyAround, }; const alignClasses: Record<FlexAlign, string> = { start: cls.alignStart, center: cls.alignCenter, end: cls.alignEnd, }; const directionClasses: Record<FlexDirection, string> = { row: cls.directionsRow, column: cls.directionsColumn, }; const gapClasses: Record<FlexGap, string> = { 2: cls.gap2, 4: cls.gap4, 8: cls.gap8, 16: cls.gap16, 24: cls.gap24, 32: cls.gap32, }; export const Flex = (props: FlexProps) => { const { className, children, justify = "start", align = "center", direction = "row", gap, max, wrap, } = props; const classes = [ className, justifyClasses[justify], alignClasses[align], directionClasses[direction], gap && gapClasses[gap], ]; const mods: Mods = { [cls.max]: max, [cls.wrap]: wrap, }; return ( <div className={classNames(cls.Flex, mods, classes)}> {children} </div> ); };