{"version":3,"file":"grid.cjs","sources":["../../../components/grid/grid.tsx"],"sourcesContent":["import { mergeProps, useRender } from '@base-ui/react';\nimport { cva, VariantProps } from 'class-variance-authority';\nimport { useMemo } from 'react';\nimport { columnGapVariants, gapVariants, rowGapVariants } from '~/shared/gap';\nimport styles from './grid.module.css';\nimport { AlignExtendedType, AlignType } from './types';\n\nconst grid = cva(styles.grid, {\n  variants: {\n    inline: {\n      true: styles['grid-inline'],\n      false: null\n    },\n    gap: gapVariants,\n    columnGap: columnGapVariants,\n    rowGap: rowGapVariants\n  }\n});\n\ntype GridProps = useRender.ComponentProps<'div'> &\n  VariantProps<typeof grid> & {\n    /**\n     * Supports CSS Grid template areas syntax.\n     *\n     * @example\n     * <Grid templateAreas=\"header header header\" />\n     * <Grid templateAreas={[\"header header header\", \"sidebar main main\", \"footer footer footer\"]} />\n     */\n    templateAreas?: string | string[];\n    autoFlow?: 'row' | 'column' | 'dense' | 'row dense' | 'column dense';\n    autoColumns?: string;\n    autoRows?: string;\n\n    /**\n     * Supports CSS Grid template columns syntax.\n     *\n     * If you pass a number, columns will be created using repeat(n, 1fr).\n     *\n     * @example\n     * <Grid columns=\"1fr 1fr 1fr\" />\n     * <Grid columns={3} />\n     */\n    columns?: string | number;\n\n    /**\n     * Supports CSS Grid template rows syntax.\n     *\n     * If you pass a number, rows will be created using repeat(n, 1fr).\n     *\n     * @example\n     * <Grid rows=\"1fr 1fr 1fr\" />\n     * <Grid rows={3} />\n     */\n    rows?: string | number;\n    justifyItems?: AlignType;\n    alignItems?: AlignType;\n    justifyContent?: AlignExtendedType;\n    alignContent?: AlignExtendedType;\n    inline?: boolean;\n  };\n\nexport function Grid({\n  templateAreas,\n  autoFlow,\n  autoColumns,\n  autoRows,\n  columns,\n  rows,\n  gap,\n  columnGap,\n  rowGap,\n  justifyItems,\n  alignItems,\n  justifyContent,\n  alignContent,\n  inline = false,\n  className,\n  style = {},\n  render,\n  ref,\n  ...props\n}: GridProps) {\n  const gridTemplateColumns =\n    typeof columns === 'number' ? `repeat(${columns}, 1fr)` : columns;\n  const gridTemplateRows =\n    typeof rows === 'number' ? `repeat(${rows}, 1fr)` : rows;\n\n  const gridTemplateAreas = useMemo(() => {\n    if (Array.isArray(templateAreas)) {\n      return templateAreas\n        .map(area => `\"${area}\"`)\n        .join(' ')\n        .trim();\n    }\n    return templateAreas;\n  }, [templateAreas]);\n\n  const gridStyle = {\n    gridTemplateAreas,\n    gridAutoFlow: autoFlow,\n    gridAutoColumns: autoColumns,\n    gridAutoRows: autoRows,\n    gridTemplateColumns,\n    gridTemplateRows,\n    justifyItems,\n    alignItems,\n    justifyContent,\n    alignContent,\n    ...style\n  };\n\n  const gridProps = {\n    'data-slot': 'grid',\n    className: grid({ inline, gap, columnGap, rowGap, className }),\n    style: gridStyle\n  };\n\n  const element = useRender({\n    defaultTagName: 'div',\n    ref,\n    render,\n    props: mergeProps<'div'>(gridProps, props)\n  });\n\n  return element;\n}\n\nGrid.displayName = 'Grid';\n"],"names":["cva","styles","gapVariants","columnGapVariants","rowGapVariants","useMemo","useRender","mergeProps"],"mappings":";;;;;;;;AAOA,MAAM,IAAI,GAAGA,0BAAG,CAACC,mBAAM,CAAC,IAAI,EAAE;AAC5B,IAAA,QAAQ,EAAE;AACR,QAAA,MAAM,EAAE;AACN,YAAA,IAAI,EAAEA,mBAAM,CAAC,aAAa,CAAC;AAC3B,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA;AACD,QAAA,GAAG,EAAEC,eAAW;AAChB,QAAA,SAAS,EAAEC,qBAAiB;AAC5B,QAAA,MAAM,EAAEC,kBAAc;AACvB,KAAA;AACF,CAAA,CAAC,CAAC;AA4CG,SAAU,IAAI,CAAC,EACnB,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,GAAG,EACH,SAAS,EACT,MAAM,EACN,YAAY,EACZ,UAAU,EACV,cAAc,EACd,YAAY,EACZ,MAAM,GAAG,KAAK,EACd,SAAS,EACT,KAAK,GAAG,EAAE,EACV,MAAM,EACN,GAAG,EACH,GAAG,KAAK,EACE,EAAA;AACV,IAAA,MAAM,mBAAmB,GACvB,OAAO,OAAO,KAAK,QAAQ,GAAG,CAAA,OAAA,EAAU,OAAO,CAAQ,MAAA,CAAA,GAAG,OAAO,CAAC;AACpE,IAAA,MAAM,gBAAgB,GACpB,OAAO,IAAI,KAAK,QAAQ,GAAG,CAAA,OAAA,EAAU,IAAI,CAAQ,MAAA,CAAA,GAAG,IAAI,CAAC;AAE3D,IAAA,MAAM,iBAAiB,GAAGC,aAAO,CAAC,MAAK;AACrC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;AAChC,YAAA,OAAO,aAAa;iBACjB,GAAG,CAAC,IAAI,IAAI,CAAI,CAAA,EAAA,IAAI,GAAG,CAAC;iBACxB,IAAI,CAAC,GAAG,CAAC;AACT,iBAAA,IAAI,EAAE,CAAC;SACX;AACD,QAAA,OAAO,aAAa,CAAC;AACvB,KAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAEpB,IAAA,MAAM,SAAS,GAAG;QAChB,iBAAiB;AACjB,QAAA,YAAY,EAAE,QAAQ;AACtB,QAAA,eAAe,EAAE,WAAW;AAC5B,QAAA,YAAY,EAAE,QAAQ;QACtB,mBAAmB;QACnB,gBAAgB;QAChB,YAAY;QACZ,UAAU;QACV,cAAc;QACd,YAAY;AACZ,QAAA,GAAG,KAAK;KACT,CAAC;AAEF,IAAA,MAAM,SAAS,GAAG;AAChB,QAAA,WAAW,EAAE,MAAM;AACnB,QAAA,SAAS,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC9D,QAAA,KAAK,EAAE,SAAS;KACjB,CAAC;IAEF,MAAM,OAAO,GAAGC,eAAS,CAAC;AACxB,QAAA,cAAc,EAAE,KAAK;QACrB,GAAG;QACH,MAAM;AACN,QAAA,KAAK,EAAEC,gBAAU,CAAQ,SAAS,EAAE,KAAK,CAAC;AAC3C,KAAA,CAAC,CAAC;AAEH,IAAA,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,IAAI,CAAC,WAAW,GAAG,MAAM;;;;"}