@aurora-ds/components 0.17.8 → 0.17.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,9 +3,9 @@ import { CSSProperties, ReactNode } from 'react';
3
3
  export type GridProps = {
4
4
  /** Grid children elements */
5
5
  children: ReactNode;
6
- /** Number of columns (number or CSS grid-template-columns value) */
6
+ /** Number of columns (number or CSS grid-template-columns value). Acts as max columns when minChildWidth is set. */
7
7
  columns?: number | string;
8
- /** Number of rows (number or CSS grid-template-rows value) */
8
+ /** Number of rows (number or CSS grid-template-rows value). */
9
9
  rows?: number | string;
10
10
  /** Gap between items (theme spacing key) */
11
11
  gap?: keyof Theme['spacing'];
package/dist/cjs/index.js CHANGED
@@ -1892,12 +1892,23 @@ Card.displayName = 'Card';
1892
1892
 
1893
1893
  /**
1894
1894
  * Generates the grid-template-columns value based on columns and minChildWidth props
1895
+ * - If only columns is defined: creates a fixed number of columns
1896
+ * - If only minChildWidth is defined: creates responsive auto-fill columns
1897
+ * - If both are defined: creates responsive columns with a maximum limit
1895
1898
  */
1896
1899
  const getGridTemplateColumns = (columns, minChildWidth) => {
1900
+ const minWidthValue = typeof minChildWidth === 'number' ? `${minChildWidth}px` : minChildWidth;
1901
+ if (minChildWidth && typeof columns === 'number') {
1902
+ // Responsive grid with max columns limit
1903
+ // Uses auto-fit with max() to ensure we don't exceed the column limit
1904
+ return `repeat(auto-fit, minmax(max(${minWidthValue}, calc((100% - ${(columns - 1)} * var(--grid-gap, 0px)) / ${columns})), 1fr))`;
1905
+ }
1897
1906
  if (minChildWidth) {
1898
- return `repeat(auto-fill, minmax(${typeof minChildWidth === 'number' ? `${minChildWidth}px` : minChildWidth}, 1fr))`;
1907
+ // Responsive grid without column limit
1908
+ return `repeat(auto-fill, minmax(${minWidthValue}, 1fr))`;
1899
1909
  }
1900
1910
  if (typeof columns === 'number') {
1911
+ // Fixed columns
1901
1912
  return `repeat(${columns}, 1fr)`;
1902
1913
  }
1903
1914
  return columns;
@@ -1915,22 +1926,28 @@ const getGridTemplateRows = (rows) => {
1915
1926
  * Grid styles using createStyles from @aurora-ds/theme
1916
1927
  */
1917
1928
  const GRID_STYLES = theme.createStyles((theme) => ({
1918
- root: ({ columns, rows, gap, columnGap, rowGap, width, height, minHeight, alignItems, justifyItems, alignContent, justifyContent, padding, minChildWidth, }) => ({
1919
- display: 'grid',
1920
- gridTemplateColumns: getGridTemplateColumns(columns, minChildWidth),
1921
- gridTemplateRows: getGridTemplateRows(rows),
1922
- gap: gap ? theme.spacing[gap] : undefined,
1923
- columnGap: columnGap ? theme.spacing[columnGap] : undefined,
1924
- rowGap: rowGap ? theme.spacing[rowGap] : undefined,
1925
- width,
1926
- height,
1927
- minHeight,
1928
- alignItems,
1929
- justifyItems,
1930
- alignContent,
1931
- justifyContent,
1932
- padding: padding ? theme.spacing[padding] : undefined,
1933
- }),
1929
+ root: ({ columns, rows, gap, columnGap, rowGap, width, height, minHeight, alignItems, justifyItems, alignContent, justifyContent, padding, minChildWidth, }) => {
1930
+ const gapValue = gap ? theme.spacing[gap] : undefined;
1931
+ const columnGapValue = columnGap ? theme.spacing[columnGap] : gapValue;
1932
+ return {
1933
+ display: 'grid',
1934
+ gridTemplateColumns: getGridTemplateColumns(columns, minChildWidth),
1935
+ gridTemplateRows: getGridTemplateRows(rows),
1936
+ gap: gapValue,
1937
+ columnGap: columnGap ? theme.spacing[columnGap] : undefined,
1938
+ rowGap: rowGap ? theme.spacing[rowGap] : undefined,
1939
+ width,
1940
+ height,
1941
+ minHeight,
1942
+ alignItems,
1943
+ justifyItems,
1944
+ alignContent,
1945
+ justifyContent,
1946
+ padding: padding ? theme.spacing[padding] : undefined,
1947
+ // CSS variable for gap calculation in grid-template-columns
1948
+ '--grid-gap': columnGapValue || gapValue || '0px',
1949
+ };
1950
+ },
1934
1951
  }));
1935
1952
 
1936
1953
  /**