/**
 * Copyright (c) Adaptavist, Inc.
 */
import { GenericProps, MultiChildProp } from '../../utilities';
import { ComponentPropsWithoutRef } from 'react';
type ContentAlignments = 'center' | 'flex-end' | 'flex-start' | 'space-around' | 'space-between' | 'space-evenly';
export type GridControls = {
    /**
     * Controls how rows are positioned in a Grid container.
     *
     * Default is `undefined`.
     */
    alignContent?: ContentAlignments;
    /**
     * Controls how items are positioned along their container's cross axis.
     *
     * Default is `undefined`.
     */
    alignItems?: 'baseline' | 'center' | 'flex-end' | 'flex-start' | 'stretch';
    /**
     * Controls the size of implicitly-created Grid columns.
     *
     * Default is `auto`.
     */
    autoCols?: 'auto' | 'fr' | 'max' | 'min';
    /**
     * Control how elements are auto-placed in a Grid.
     *
     * Default is `row`.
     */
    autoFlow?: 'column' | 'column dense' | 'dense' | 'row' | 'row dense';
    /**
     * Controls the size of implicitly-created Grid rows.
     *
     * Default is `auto`.
     */
    autoRows?: 'auto' | 'fr' | 'max' | 'min';
    /**
     * Controls the gutters between Grid items.
     *
     * Default is `an empty string`.
     */
    gap?: string;
    /**
     * Controls how Grid items are positioned along the Grid's main axis.
     *
     * Default is `undefined`.
     */
    justifyContent?: ContentAlignments;
    /**
     * Controls how Grid items are positioned along their inline axis.
     *
     * Default is `undefined`.
     */
    justifyItems?: 'center' | 'end' | 'start' | 'stretch';
    /**
     * Controls how content is justified and aligned at the same time.
     *
     * Default is `undefined`.
     */
    placeContent?: 'center' | 'start' | 'end' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch';
    /**
     * Controls how items are justified and aligned at the same time. Default is `undefined`.
     */
    placeItems?: 'center' | 'end' | 'start' | 'stretch';
    /**
     * Controls the number of columns in a Grid.
     *
     * Default is `1`.
     */
    templateCols?: number | string;
    /**
     * Control the number of rows in a Grid.
     *
     * Default is `1`.
     */
    templateRows?: number | string;
};
export type GridItemControls = {
    /**
     * Controls how this item will align along its container's cross axis.
     *
     * Default is `undefined`.
     */
    alignSelf?: 'auto' | 'baseline' | 'center' | 'end' | 'start' | 'stretch';
    /**
     * Controls the column number this item will end at.
     *
     * Default is `undefined`.
     */
    colEnd?: 'auto' | number;
    /**
     * Controls the number of columns this item will cover in the grid.
     *
     * Default is `undefined`.
     */
    colSpan?: 'auto' | 'full' | number;
    /**
     * Controls the column number this item will start at.
     *
     * Default is `undefined`.
     */
    colStart?: 'auto' | number;
    /**
     * Controls how this item will align along its inline axis.
     *
     * Default is `undefined`.
     */
    justifySelf?: 'auto' | 'center' | 'end' | 'start' | 'stretch';
    /**
     * Controls the order of Grid items.
     *
     * Default is `undefined`.
     */
    order?: 'first' | 'last' | 'none' | number;
    /**
     * Controls how this Grid item will be justified and aligned at the same time.
     *
     * Default is `undefined`.
     */
    placeSelf?: 'auto' | 'center' | 'end' | 'start' | 'stretch';
    /**
     * Controls the row number this item will end at.
     *
     * Default is `undefined`.
     */
    rowEnd?: 'auto' | number;
    /**
     * Controls the number of rows this item will cover in the Grid.
     *
     * Default is `undefined`.
     */
    rowSpan?: 'auto' | 'full' | number;
    /**
     * Controls the row number this item will start at.
     *
     * Default is `undefined`.
     */
    rowStart?: 'auto' | number;
};
export type IGrid = ComponentPropsWithoutRef<'div'> & GenericProps & GridControls & MultiChildProp & {
    /**
     * Overrides the Grid Atom's styles for when the viewport is less than MD but more than SM.
     *
     * Default is `an empty object`.
     */
    breakpointSM?: GridControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's styles for when the viewport is less than LG but more than MD.
     *
     * Default is `an empty object`.
     */
    breakpointMD?: GridControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's styles for when the viewport is less than XL but more than LG.
     *
     * Default is `an empty object`.
     */
    breakpointLG?: GridControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's styles for when the viewport is less than XXL but more than XL.
     *
     * Default is `an empty object`.
     */
    breakpointXL?: GridControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's styles for when the viewport is more than XXL.
     *
     * Default is `an empty object`.
     */
    breakpointXXL?: GridControls & {
        [key: string]: string | number;
    };
    /**
     * Controls the type of grid used in the Grid Atom. Default is 'grid'.
     *
     * Default is `an empty object`.
     */
    display?: 'grid' | 'inline-grid';
};
export type IGridItem = ComponentPropsWithoutRef<'div'> & GenericProps & GridItemControls & MultiChildProp & {
    /**
     * Overrides the Grid Atom's item styles for when the viewport is less than MD but more than SM.
     *
     * Default is `an empty object`.
     */
    breakpointSM?: GridItemControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's item styles for when the viewport is less than LG but more than MD.
     *
     * Default is `an empty object`.
     */
    breakpointMD?: GridItemControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's item styles for when the viewport is less than XL but more than LG.
     *
     * Default is `an empty object`.
     */
    breakpointLG?: GridItemControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's item styles for when the viewport is less than XXL but more than XL.
     *
     * Default is `an empty object`.
     */
    breakpointXL?: GridItemControls & {
        [key: string]: string | number;
    };
    /**
     * Overrides the Grid Atom's item styles for when the viewport is more than XXL.
     *
     * Default is `an empty object`.
     */
    breakpointXXL?: GridItemControls & {
        [key: string]: string | number;
    };
};
export {};
