client/styles/grid.ts (31 lines of code) (raw):
import { from, space } from '@guardian/source/foundations';
export const gridColumns = {
default: 4,
tabletAndDesktop: 12,
wide: 16,
};
export const gridBase = {
display: 'grid',
paddingLeft: `${space[3]}px`,
paddingRight: `${space[3]}px`,
gridTemplateColumns: `repeat(${gridColumns.default}, minmax(0, 1fr))`,
gridAutoColumns: 'max-content',
columnGap: `${space[5]}px`,
[from.tablet]: {
paddingLeft: `${space[5]}px`,
paddingRight: `${space[5]}px`,
gridTemplateColumns: `repeat(${gridColumns.tabletAndDesktop}, minmax(0, 1fr))`,
},
[from.wide]: {
gridTemplateColumns: `repeat(${gridColumns.wide}, minmax(0, 1fr))`,
},
};
export const gridItemPlacement = (
startingPos: number,
span: number,
): object => {
return {
gridColumnStart: `${startingPos}`,
gridColumnEnd: `span ${span}`,
};
};