diff --git a/client/constants/Pattern.ts b/client/constants/Pattern.ts
index 68ed829..51183e5 100644
--- a/client/constants/Pattern.ts
+++ b/client/constants/Pattern.ts
@@ -45,6 +45,7 @@ enum Pattern {
KeyboardShortcut = 'Keyboard shortcut',
LayeredCard = 'Layered card',
LinedPaper = 'Lined paper',
+ MasonryGrid = 'Masonry grid',
MediaObject = 'Media object',
MegaMenu = 'Mega menu',
Menu = 'Menu',
diff --git a/client/pages/ExplorePage.tsx b/client/pages/ExplorePage.tsx
index 4f94f09..331e598 100644
--- a/client/pages/ExplorePage.tsx
+++ b/client/pages/ExplorePage.tsx
@@ -52,6 +52,7 @@ const ExplorePage = () => {
+
diff --git a/client/patterns/card-layout/Details.tsx b/client/patterns/card-layout/Details.tsx
index e8e9b47..f464b77 100644
--- a/client/patterns/card-layout/Details.tsx
+++ b/client/patterns/card-layout/Details.tsx
@@ -21,8 +21,7 @@ const Details: React.FC<{}> = () => {
-
-
@@ -53,40 +52,39 @@ css={`
padding-right: 8px;
}
`}
+ >
+
-
- {
- Array(10).fill(0).map((_, index) => {
- return (
-
-
-
- );
- })
- }
-
+ {
+ Array(10).fill(0).map((_, index) => {
+ return (
+
+
+
+ );
+ })
+ }
-
-
+
+
-
+
);
};
diff --git a/client/patterns/masonry-grid/Cover.tsx b/client/patterns/masonry-grid/Cover.tsx
new file mode 100644
index 0000000..74a8e8d
--- /dev/null
+++ b/client/patterns/masonry-grid/Cover.tsx
@@ -0,0 +1,45 @@
+/**
+ * A collection of popular layouts and patterns made with CSS (https://csslayout.io)
+ * (c) 2019 - 2021 Nguyen Huu Phuoc
+ */
+
+import * as React from 'react';
+
+import Frame from '../../placeholders/Frame';
+import Rectangle from '../../placeholders/Rectangle';
+
+const Cover: React.FC<{}> = () => {
+ return (
+
+
+
+ );
+};
+
+export default Cover;
diff --git a/client/patterns/masonry-grid/Details.tsx b/client/patterns/masonry-grid/Details.tsx
new file mode 100644
index 0000000..9c3d08c
--- /dev/null
+++ b/client/patterns/masonry-grid/Details.tsx
@@ -0,0 +1,86 @@
+/**
+ * A collection of popular layouts and patterns made with CSS (https://csslayout.io)
+ * (c) 2019 - 2021 Nguyen Huu Phuoc
+ */
+
+import * as React from 'react';
+import { Helmet } from 'react-helmet';
+
+import RelatedPatterns from '../../components/RelatedPatterns';
+import Pattern from '../../constants/Pattern';
+import DetailsLayout from '../../layouts/DetailsLayout';
+import BrowserFrame from '../../placeholders/BrowserFrame';
+import Rectangle from '../../placeholders/Rectangle';
+
+import './masonry-grid.css';
+
+const Details: React.FC<{}> = () => {
+ return (
+
+
+
+
+
+
+
+
+
+ ...
+
+
+
+`}
+css={`
+.masonry-grid {
+ /* It is split into 3 columns */
+ column-count: 3;
+
+ /* The space between columns */
+ column-gap: 1rem;
+
+ /* Misc */
+ width: 100%;
+}
+
+.masonry-grid__item {
+ /* Prevent a column from breaking into multiple columns */
+ break-inside: avoid;
+
+ /* Misc */
+ margin-bottom: 1rem;
+}
+`}
+ >
+
+
+
+
+
+ );
+};
+
+export default Details;
diff --git a/client/patterns/masonry-grid/masonry-grid.css b/client/patterns/masonry-grid/masonry-grid.css
new file mode 100644
index 0000000..f26a81b
--- /dev/null
+++ b/client/patterns/masonry-grid/masonry-grid.css
@@ -0,0 +1,20 @@
+/**
+ * A collection of popular layouts and patterns made with CSS (https://csslayout.io)
+ * (c) 2019 - 2021 Nguyen Huu Phuoc
+ */
+
+.masonry-grid {
+ column-count: 3;
+ column-gap: 1rem;
+
+ /* Misc */
+ width: 100%;
+}
+
+.masonry-grid__item {
+ /* Prevent a column from breaking into multiple columns */
+ break-inside: avoid;
+
+ /* Misc */
+ margin-bottom: 1rem;
+}
diff --git a/client/patterns/simple-grid/Details.tsx b/client/patterns/simple-grid/Details.tsx
index 0f18d59..842afc1 100644
--- a/client/patterns/simple-grid/Details.tsx
+++ b/client/patterns/simple-grid/Details.tsx
@@ -21,8 +21,7 @@ const Details: React.FC<{}> = () => {
-
-
@@ -57,92 +56,91 @@ css={`
flex: 1;
}
`}
+ >
+
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
);
};