All files / Rindu/components/Grid Grid.tsx

100% Statements 1/1
100% Branches 4/4
100% Functions 1/1
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55                  1x                                                                                          
import { PropsWithChildren, ReactElement } from "react";
 
interface IGridProps {
  minWidthItem?: string;
  maxWidthItem?: string;
  marginTop?: string;
  marginBottom?: string;
}
 
export default function Grid({
  children,
  minWidthItem = "190px",
  maxWidthItem = "1fr",
  marginTop = "20px",
  marginBottom = "0px",
}: PropsWithChildren<IGridProps>): ReactElement {
  return (
    <div>
      {children}
      <style jsx>{`
        div {
          display: grid;
          grid-template-columns: repeat(
            auto-fill,
            minmax(${minWidthItem}, ${maxWidthItem})
          );
          gap: 24px;
          justify-content: space-between;
          margin-top: ${marginTop};
          margin-bottom: ${marginBottom};
          grid-template-rows: auto;
          transition: 400ms ease-in;
        }
        div > :global(*) {
          width: 100%;
        }
        @media screen and (max-width: 768px) {
          div {
            column-gap: 8px;
            row-gap: 16px;
          }
        }
        @media (max-width: 420px) {
          div {
            grid-template-columns: repeat(
              auto-fill,
              minmax(calc(${minWidthItem} - 20px), 1fr)
            );
          }
        }
      `}</style>
    </div>
  );
}