diff --git a/apps/pigment-css-next-app/src/app/grid/demo3.tsx b/apps/pigment-css-next-app/src/app/grid/demo3.tsx
new file mode 100644
index 00000000..b3419d9c
--- /dev/null
+++ b/apps/pigment-css-next-app/src/app/grid/demo3.tsx
@@ -0,0 +1,43 @@
+'use client';
+import * as React from 'react';
+import Grid from '@pigment-css/react/Grid';
+import { styled } from '@pigment-css/react';
+
+const Item = styled.div`
+ background-color: #fff;
+ border: 1px solid #ced7e0;
+ padding: 8px;
+ border-radius: 4px;
+ text-align: center;
+`;
+
+export default function GridDemo3() {
+ const [spacing, setSpacing] = React.useState(2);
+ return (
+
+
+ {[0, 1, 2].map((value) => (
+
+
+
+ ))}
+
+
+ Spacing:
+ {[0, 0.5, 1, 2, 3, 4, 8, 12].map((value) => (
+
+
+
+ ))}
+
+
+ )
+}
diff --git a/apps/pigment-css-next-app/src/app/grid/page.tsx b/apps/pigment-css-next-app/src/app/grid/page.tsx
new file mode 100644
index 00000000..4ac3c87a
--- /dev/null
+++ b/apps/pigment-css-next-app/src/app/grid/page.tsx
@@ -0,0 +1,272 @@
+import Box from '@pigment-css/react/Box';
+import Grid from '@pigment-css/react/Grid';
+import { styled } from '@pigment-css/react';
+import GridDemo3 from './demo3';
+
+const Item = styled.div`
+ background-color: #fff;
+ border: 1px solid #ced7e0;
+ padding: 8px;
+ border-radius: 4px;
+ text-align: center;
+`;
+
+function GridDemo1() {
+ return (
+
+
+ - size=8
+
+
+ - size=4
+
+
+ - size=4
+
+
+ - size=8
+
+
+ )
+}
+
+function GridDemo2() {
+ return (
+
+
+ - xs=6 md=8
+
+
+ - xs=6 md=4
+
+
+ - xs=6 md=4
+
+
+ - xs=6 md=8
+
+
+ )
+}
+
+function GridDemo4() {
+ return (
+
+
+ - 1
+
+
+ - 2
+
+
+ - 3
+
+
+ - 4
+
+
+ )
+}
+
+function GridDemo5() {
+ return (
+
+ {Array.from(Array(6)).map((_, index) => (
+
+ - {index + 1}
+
+ ))}
+
+ )
+}
+
+function GridDemo6() {
+ return (
+
+
+ - grow
+
+
+ - size=6
+
+
+ - grow
+
+
+ )
+}
+
+function GridDemo7() {
+ return (
+
+
+ - Variable width item
+
+
+ - size=6
+
+
+ - grow
+
+
+ )
+}
+
+function GridDemo8() {
+ return (
+
+
+
+ - Email subscribe section
+
+
+
+ -
+
+ Category A
+
+
+ Link 1.1
+ Link 1.2
+ Link 1.3
+
+
+
+
+ -
+
+ Category B
+
+
+ Link 2.1
+ Link 2.2
+ Link 2.3
+
+
+
+
+ -
+
+ Category C
+
+
+ Link 3.1
+ Link 3.2
+ Link 3.3
+
+
+
+
+ -
+
+ Category D
+
+
+ Link 4.1
+ Link 4.2
+ Link 4.3
+
+
+
+
+
+
+ - © Copyright
+
+
+
+ - Link A
+
+
+ - Link B
+
+
+ - Link C
+
+
+
+
+
+ )
+}
+
+function GridDemo9() {
+ return (
+
+
+ - size=8
+
+
+ - size=8
+
+
+ )
+}
+
+function GridDemo10() {
+ return (
+
+
+ - 1
+
+
+ - 2
+
+
+ - 3
+
+
+ - 4
+
+
+ )
+}
+
+const demos = [
+ { id: '1', component: GridDemo1 },
+ { id: '2', component: GridDemo2 },
+ { id: '3', component: GridDemo3 },
+ { id: '4', component: GridDemo4 },
+ { id: '5', component: GridDemo5 },
+ { id: '6', component: GridDemo6 },
+ { id: '7', component: GridDemo7 },
+ { id: '8', component: GridDemo8 },
+ { id: '9', component: GridDemo9 },
+ { id: '10', component: GridDemo10 },
+]
+
+export default function InteractiveGrid() {
+
+ return (
+
+
Benchmark v5
+
Benchmark next
+ {demos.map(demo => {
+ const Demo = demo.component;
+ return (
+
+
Grid Demo {demo.id}
+
+
+ );
+ })}
+
+ );
+}