├── .eslintignore ├── lib ├── __tests__ │ ├── .eslintrc │ ├── __snapshots__ │ │ ├── Grid.test.js.snap │ │ └── Cell.test.js.snap │ ├── Cell.test.js │ └── Grid.test.js ├── Cell.js └── Grid.js ├── scripts ├── .eslintrc ├── build.js ├── rollup.config.js ├── prerender-website.js └── rollup.website.config.js ├── .gitignore ├── website ├── caniuse.png ├── components │ ├── DemoGrid.js │ ├── MdnLink.js │ ├── DemoCell.js │ ├── Page.js │ ├── Heading.js │ ├── Example.js │ ├── Main.js │ ├── Footer.js │ ├── sections │ │ ├── TraditionalGrid.js │ │ ├── Centering.js │ │ ├── Positioning.js │ │ ├── TransposedGrid.js │ │ ├── HolyGrail.js │ │ ├── Responsive.js │ │ ├── Dense.js │ │ ├── Areas.js │ │ └── Alignment.js │ └── Header.js ├── colors.js ├── website.js └── index.html ├── index.js ├── .github ├── ISSUE_TEMPLATE.md └── workflows │ └── cicd.yml ├── .babelrc ├── .eslintrc.json ├── LICENSE ├── index.d.ts ├── package.json └── README.md /.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | website/bin 3 | -------------------------------------------------------------------------------- /lib/__tests__/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { "jest": true } 3 | } 4 | -------------------------------------------------------------------------------- /scripts/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "node": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | website/bin 4 | *.log 5 | .vscode 6 | -------------------------------------------------------------------------------- /website/caniuse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azz/styled-css-grid/HEAD/website/caniuse.png -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import Cell from "./lib/Cell"; 4 | import Grid from "./lib/Grid"; 5 | 6 | export { Cell, Grid }; 7 | -------------------------------------------------------------------------------- /website/components/DemoGrid.js: -------------------------------------------------------------------------------- 1 | import { Grid } from "../../"; 2 | 3 | const DemoGrid = Grid.extend`flex: 1;`; 4 | 5 | export default DemoGrid; 6 | -------------------------------------------------------------------------------- /website/colors.js: -------------------------------------------------------------------------------- 1 | export default [ 2 | "#1f77b4", 3 | "#d62728", 4 | "#ff7f0e", 5 | "#9467bd", 6 | "#8c564b", 7 | "#e377c2", 8 | "#7f7f7f", 9 | "#bcbd22", 10 | "#b82e2e", 11 | "#17becf" 12 | ]; 13 | -------------------------------------------------------------------------------- /website/components/MdnLink.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | const MdnLink = ({ children }) => 4 | 5 | 6 | {children} 7 | 8 | ; 9 | 10 | export default MdnLink; 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /website/website.js: -------------------------------------------------------------------------------- 1 | import "normalize.css/normalize.css"; 2 | 3 | import "prismjs/themes/prism.css"; 4 | import "prismjs"; 5 | import "prismjs/components/prism-jsx"; 6 | 7 | import React from "react"; 8 | import * as ReactDOM from "react-dom"; 9 | 10 | import Page from "./components/Page"; 11 | 12 | ReactDOM.render(, document.querySelector(".outlet")); 13 | -------------------------------------------------------------------------------- /lib/__tests__/__snapshots__/Grid.test.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[` matches snapshot with default args 1`] = ` 4 | .c0 { 5 | display: grid; 6 | height: auto; 7 | grid-auto-flow: row; 8 | grid-auto-rows: minmax(20px,auto); 9 | grid-template-columns: repeat(12,1fr); 10 | grid-gap: 8px; 11 | } 12 | 13 |
16 | `; 17 | -------------------------------------------------------------------------------- /website/components/DemoCell.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Cell } from "../../"; 3 | 4 | const _DemoCell = Cell.extend` 5 | font-size: 0.8em; 6 | border: 1px solid #999; 7 | background: #f5f2f0; 8 | line-height: 1; 9 | color: #905; 10 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; 11 | `; 12 | 13 | const DemoCell = props => <_DemoCell center middle {...props} />; 14 | 15 | export default DemoCell; 16 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [["es2015", { "modules": false }], "react"], 3 | "env": { 4 | "development": { 5 | "plugins": [["transform-es2015-modules-commonjs", { "loose": true }]] 6 | }, 7 | "test": { 8 | "plugins": [["transform-es2015-modules-commonjs", { "loose": true }]] 9 | }, 10 | "production": { 11 | "plugins": [["transform-es2015-modules-commonjs", { "loose": true }]] 12 | }, 13 | "build": { 14 | "plugins": ["external-helpers", ["styled-components", { "minify": true }]] 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /website/components/Page.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import styled from "styled-components"; 3 | 4 | import Header from "./Header"; 5 | import Main from "./Main"; 6 | import Footer from "./Footer"; 7 | 8 | const PageContainer = styled.div` 9 | max-width: 960px; 10 | padding: 8px; 11 | margin: 0 auto; 12 | font-weight: 300; 13 | font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif; 14 | `; 15 | 16 | const Page = () => 17 | 18 |
19 |
20 |