import { type ElementType, type JSXElementConstructor } from 'react'; import { type AlignmentXExtendedDictionaryType, type AlignmentYExtendedDictionaryType, type ChildrenProps, type GridColumns, type SingleOrResponsive, type SpaceToken, type StyleProps, type TransferProps } from './shared'; export type GridColsBreakpoints = { mobile?: GridColumns; tablet?: GridColumns; desktop?: GridColumns; }; export type GridItemSpan = `span ${number}`; export type GridItemPositionBreakpoints = { mobile?: number | GridItemSpan; tablet?: number | GridItemSpan; desktop?: number | GridItemSpan; }; export type GridItemPosition = number | GridItemSpan | GridItemPositionBreakpoints; export interface GridElementTypeProps { elementType?: T | JSXElementConstructor; } export interface GridItemElementTypeProps { elementType?: T | JSXElementConstructor; } export type GridAlignmentXType = NonNullable | { [key: string]: NonNullable; }; export type GridAlignmentYType = NonNullable | { [key: string]: NonNullable; }; export interface GridCustomLayoutProps { alignmentX?: GridAlignmentXType; alignmentY?: GridAlignmentYType; cols?: GridColumns | GridColsBreakpoints; spacing?: SingleOrResponsive; spacingX?: SingleOrResponsive; spacingY?: SingleOrResponsive; } export interface GridItemCustomLayoutProps { columnEnd?: GridItemPosition; columnStart?: GridItemPosition; rowEnd?: GridItemPosition; rowStart?: GridItemPosition; } export interface GridProps extends GridElementTypeProps, GridCustomLayoutProps { } export interface GridItemProps extends GridItemElementTypeProps, GridItemCustomLayoutProps { } export interface SpiritGridProps extends GridProps, ChildrenProps, StyleProps, TransferProps { } export interface SpiritGridItemProps extends GridItemProps, ChildrenProps, StyleProps, TransferProps { }