grid.tsx 761 B

123456789101112131415161718192021222324252627
  1. "use client";
  2. import type { ComponentRenderProps } from "./types";
  3. import { baseClass, getCustomClass } from "./utils";
  4. export function Grid({ element, children }: ComponentRenderProps) {
  5. const { props } = element;
  6. const customClass = getCustomClass(props);
  7. const hasCustomCols = customClass.includes("grid-cols-");
  8. const cols = hasCustomCols
  9. ? ""
  10. : props.columns === 4
  11. ? "grid-cols-4"
  12. : props.columns === 3
  13. ? "grid-cols-3"
  14. : props.columns === 2
  15. ? "grid-cols-2"
  16. : "grid-cols-1";
  17. const gridGap =
  18. props.gap === "lg" ? "gap-3" : props.gap === "sm" ? "gap-1" : "gap-2";
  19. return (
  20. <div className={`grid ${cols} ${gridGap} ${baseClass} ${customClass}`}>
  21. {children}
  22. </div>
  23. );
  24. }