import styled from '@emotion/styled'; import {StyledType, createComponent} from '@workday/canvas-kit-react/common'; import {Box, BoxProps} from './Box'; import {GridStyleProps, grid} from './utils/grid'; export type GridProps = Omit & GridStyleProps; export type GridItemProps = BoxProps; // TODO: Update this to use the new styling approach. const StyledGrid = styled(Box)( { display: 'grid', }, grid ); const GridItem = createComponent('div')({ displayName: 'Grid.Item', Component: ({children, ...elemProps}: BoxProps, ref, Element) => { return ( {children} ); }, }); /** * `Grid` is a two-dimensional layout system for the web. It lets you lay content out in rows and columns. * It is highly flexible, and can be used on its own or to build other components. * `Grid` is built on top of `Box` and has access to all `BoxProps`. * * @example * ```tsx * import { Grid } from '@workday/canvas-kit-react/layout'; * * interface CardProps extends GridProps { * // card-specific props * } * * // `Card`'s default values are set using `GridProps` * const Card = (props: CardProps) => ( * *

Hello, Card!

*

This card uses grid to set its layout.

*
* ); *``` */ export const Grid = createComponent('div')({ displayName: 'Grid', Component: ({children, ...elemProps}: GridProps, ref, Element) => { return ( {children} ); }, subComponents: { /** * `` is the child specific sub-component to ``. `` gets child specific props, whereas `` gets parent container props. * * @example * ``` * import { Grid } from '@workday/canvas-kit-react/layout'; * `Grid` is built on top of `Box` so `` gets all `BoxProps` as well. * * interface CardProps extends GridItemStyleProps { * // card-specific props * } * * // `Card`'s default values are set using `GridItemStyleProps` * const Card = (props: CardProps) => ( * *

Hello, Card!

*

This card uses grid child specific props to set its layout.

*
* ); *``` */ Item: GridItem, }, });